@randstad-uca/design-system 1.0.36 → 1.0.38
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/components/Select.d.ts +1 -0
- package/dist/index.js +86 -86
- package/dist/index.js.map +1 -1
- package/dist/package.json +2 -1
- package/package.json +2 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/@lit/reactive-element/decorators/base.js","../src/styles/fontStyles.ts","../src/components/Accordion.ts","../src/components/AccordionList.ts","../src/components/Button.ts","../src/components/CarouselCards.ts","../src/components/Checkbox.ts","../src/components/Form.ts","../src/components/FormGroup.ts","../src/components/Icon.ts","../src/components/Notice.ts","../src/components/Modal.ts","../src/components/Popup.ts","../src/components/ProgressCircle.ts","../node_modules/@material/web/internal/controller/attachable-controller.js","../node_modules/@material/web/focus/internal/focus-ring.js","../node_modules/@material/web/focus/internal/focus-ring-styles.js","../node_modules/@material/web/focus/md-focus-ring.js","../node_modules/@material/web/internal/motion/animation.js","../node_modules/@material/web/ripple/internal/ripple.js","../node_modules/@material/web/ripple/internal/ripple-styles.js","../node_modules/@material/web/ripple/ripple.js","../node_modules/@material/web/internal/events/form-label-activation.js","../node_modules/@material/web/labs/behaviors/element-internals.js","../node_modules/@material/web/labs/behaviors/constraint-validation.js","../node_modules/@material/web/labs/behaviors/focusable.js","../node_modules/@material/web/labs/behaviors/form-associated.js","../node_modules/@material/web/labs/behaviors/validators/validator.js","../node_modules/@material/web/labs/behaviors/validators/radio-validator.js","../node_modules/@material/web/radio/internal/single-selection-controller.js","../node_modules/@material/web/radio/internal/radio.js","../node_modules/@material/web/radio/internal/radio-styles.js","../node_modules/@material/web/radio/radio.js","../src/components/Radio.ts","../node_modules/lit-html/directive.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-html/directives/unsafe-html.js","../node_modules/lit-html/directives/unsafe-svg.js","../src/components/Select.ts","../src/styles/globalStyles.ts","../src/components/Snackbar.ts","../src/components/Stepper.ts","../src/components/Tabs.ts","../src/components/Upload.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","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=h.fromAttribute(s,t.type)??this._$Ej?.get(e)??null,this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){const e=this.constructor,h=this[t];if(i??=e.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(e._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.0\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import { css } from 'lit';\r\n\r\nexport const bodyXS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 15px;\r\n letter-spacing: 0%;\r\n`;\r\n\r\nexport const bodyS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 25px;\r\n letter-spacing: 0%;\r\n`;\r\n\r\nexport const bodyM = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 16px;\r\n line-height: 25px;\r\n letter-spacing: 0%;\r\n`;\r\n\r\nexport const bodyL = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 18px;\r\n line-height: 30px;\r\n letter-spacing: 0%;\r\n`;\r\n\r\nexport const titleXXS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 18px;\r\n line-height: 30px;\r\n letter-spacing: 0%;\r\n vertical-align: middle;\r\n`;\r\n\r\nexport const titleXS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 20px;\r\n line-height: 30px;\r\n letter-spacing: -1%;\r\n vertical-align: middle;\r\n`;\r\n\r\nexport const titleS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 26px;\r\n line-height: 30px;\r\n letter-spacing: -1%;\r\n vertical-align: middle;\r\n`;\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { bodyM } from '../styles/fontStyles';\r\n\r\n@customElement('accordion-panel')\r\nexport class AccordionPanel extends LitElement {\r\n @property({ type: String }) title = '';\r\n @state() private isOpen = false;\r\n @state() private isDesktop = window.innerWidth > 940;\r\n\r\n static styles = css`\r\n :host {\r\n display: flex;\r\n flex-direction: column;\r\n font-family: 'Graphik', sans-serif;\r\n position: relative;\r\n }\r\n\r\n .header {\r\n display: flex;\r\n justify-content: space-between;\r\n gap: 16px;\r\n flex-direction: row;\r\n align-items: center;\r\n cursor: pointer;\r\n padding-bottom: 16px;\r\n }\r\n\r\n .title {\r\n ${bodyM}\r\n color: var(--secondary-color);\r\n }\r\n\r\n .icon-wrapper {\r\n width: 40px;\r\n height: 40px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: background-color 0.3s ease;\r\n }\r\n\r\n .icon {\r\n transition: transform 0.3s;\r\n }\r\n\r\n .content {\r\n overflow: hidden;\r\n max-height: 0;\r\n transition: max-height 0.3s ease, padding-bottom 0.3s ease;\r\n }\r\n\r\n .content.open {\r\n max-height: 1000px;\r\n padding-bottom: 16px;\r\n }\r\n\r\n :host::after {\r\n content: '';\r\n display: block;\r\n height: 1px;\r\n background-color: var(--secondary-color-20);\r\n width: 100%;\r\n }\r\n\r\n @media (min-width: 941px) {\r\n .header {\r\n align-items: flex-start;\r\n }\r\n .header:hover .icon-wrapper {\r\n background-color: var(--primary-color-5);\r\n }\r\n }\r\n `;\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n window.addEventListener('resize', this.handleResize);\r\n }\r\n\r\n disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n window.removeEventListener('resize', this.handleResize);\r\n }\r\n\r\n private handleResize = () => {\r\n this.isDesktop = window.innerWidth > 940;\r\n };\r\n\r\n private toggle() {\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n private renderIcon() {\r\n return this.isOpen\r\n ? html`<randstad-icon name=\"arrow_up\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`\r\n : html`<randstad-icon name=\"arrow_down\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"header\" @click=${this.toggle}>\r\n <div class=\"title\">${this.title}</div>\r\n <div class=\"icon\">\r\n ${this.isDesktop\r\n ? html`\r\n <div class=\"icon-wrapper\">\r\n ${this.renderIcon()}\r\n </div>\r\n `\r\n : this.renderIcon()}\r\n </div>\r\n </div>\r\n <div class=\"content ${this.isOpen ? 'open' : ''}\">\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n\r\n}\r\n","import { LitElement, css, html } from 'lit';\r\nimport { customElement } from 'lit/decorators.js';\r\n\r\n@customElement('accordion-list')\r\nexport class AccordionList extends LitElement {\r\n static styles = css`\r\n :host {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`<slot></slot>`;\r\n }\r\n}","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyM, bodyL } from '../styles/fontStyles';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport '../styles/buttons.css';\r\n\r\n@customElement('randstad-button')\r\nexport class RandstadButton extends LitElement {\r\n @property({ type: String }) variant: 'button-primary' | 'button-secondary' | 'button-tertiary' | 'button-round' | 'button-card' = 'button-primary';\r\n @property({ type: String }) size: 'md' | 'lg' = 'md';\r\n @property({ type: String }) label = '';\r\n @property({ type: Boolean }) loader = false;\r\n @property({ type: String, attribute: 'icon-src' }) iconSrc?: string;\r\n @property({ type: String }) iconPosition: 'left' | 'right' = 'left';\r\n @property({ type: Boolean, reflect: true }) disabled: boolean = false;\r\n @property({ type: String }) iconName: string | null = null;\r\n @property({ type: String }) type: 'button' | 'submit' | 'reset' = 'button';\r\n @property({ type: String }) idevent='';\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n font-weight: 400;\r\n padding: 16px;\r\n border: none;\r\n transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;\r\n gap: 4px;\r\n width: 100%;\r\n }\r\n\r\n .button-lg {\r\n ${bodyL}\r\n min-height: 62px;\r\n }\r\n\r\n .button-md {\r\n ${bodyM}\r\n min-height: 57px;\r\n }\r\n\r\n /* Primary */\r\n .button-primary {\r\n background-color: var(--primary-color);\r\n color: var(--white);\r\n }\r\n\r\n .button-primary:not([disabled]):hover {\r\n background-color: var(--primary-button-hover);\r\n }\r\n\r\n .button-primary:not([disabled]):active {\r\n background-color: var(--primary-button-active);\r\n }\r\n\r\n .button-primary:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-button-focus);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-primary[disabled] {\r\n color: var(--secondary-color-60);\r\n background-color: var(--secondary-color-20);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Secondary */\r\n .button-secondary {\r\n background: none;\r\n color: var(--primary-color);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n .button-secondary:not([disabled]):hover {\r\n color: var(--primary-button-hover);\r\n border-color: var(--primary-button-hover);\r\n }\r\n\r\n .button-secondary:not([disabled]):active {\r\n color: var(--secondary-color-80);\r\n border-color: var(--secondary-color-80);\r\n }\r\n\r\n .button-secondary:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-color);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-secondary[disabled] {\r\n color: var(--secondary-color-60);\r\n border-color: var(--secondary-color-60);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Tertiary */\r\n .button-tertiary {\r\n background: none;\r\n border: none;\r\n color: var(--primary-color);\r\n }\r\n\r\n .button-tertiary:not([disabled]):hover {\r\n background: var(--primary-color-5);\r\n }\r\n\r\n .button-tertiary:not([disabled]):active {\r\n background-color: var(--primary-color-10);\r\n }\r\n\r\n .button-tertiary:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-color);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-tertiary[disabled] {\r\n color: var(--secondary-color-60);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Round */\r\n .button-round {\r\n width: 48px;\r\n height: 48px;\r\n border-radius: 50%;\r\n background-color: var(--white);\r\n box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2);\r\n padding: 0;\r\n }\r\n\r\n .button-round:not([disabled]):hover {\r\n background-color: var(--randstad-blue-10);\r\n }\r\n\r\n .button-round:not([disabled]):active {\r\n background-color: var(--randstad-blue-40);\r\n }\r\n\r\n .button-round:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-color);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-round[disabled] {\r\n background-color: var(--secondary-color-20);\r\n cursor: not-allowed;\r\n }\r\n\r\n .button-round img.button-icon {\r\n width: 24px;\r\n height: 24px;\r\n }\r\n\r\n /* Loader */\r\n .loader {\r\n display: flex;\r\n gap: 8px;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .dot {\r\n border-radius: 50%;\r\n display: inline-block;\r\n animation: growAndFade 2.4s infinite ease-in-out;\r\n }\r\n\r\n .button-md .dot {\r\n width: 6px;\r\n height: 6px;\r\n }\r\n\r\n .button-lg .dot {\r\n width: 8px;\r\n height: 8px;\r\n }\r\n\r\n .dot:nth-child(1) { animation-delay: 0s; }\r\n .dot:nth-child(2) { animation-delay: 0.8s; }\r\n .dot:nth-child(3) { animation-delay: 1.6s; }\r\n\r\n @keyframes growAndFade {\r\n 0% { transform: scale(1); }\r\n 16.67% { transform: scale(1.5); }\r\n 33.33% { transform: scale(1.5); }\r\n 50% { transform: scale(1); }\r\n 100% { transform: scale(1); }\r\n }\r\n\r\n .button-primary.loader .dot,\r\n .button-secondary.loader .dot {\r\n background-color: var(--white);\r\n }\r\n\r\n .button-secondary.loader {\r\n background-color: var(--primary-color);\r\n border: none;\r\n color: var(--white);\r\n }\r\n\r\n .button-card {\r\n font-family: 'Graphik';\r\n background-color: var(--primary-color);\r\n color: var(--white);\r\n border-radius: 4px;\r\n padding: 4px 16px;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 15px;\r\n letter-spacing: 0%;\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n }\r\n\r\n .button-card:not([disabled]):hover {\r\n background-color: #175197;\r\n }\r\n\r\n .button-card:not([disabled]):active {\r\n background-color: #124077;\r\n }\r\n\r\n .button-card:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-color);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-card[disabled] {\r\n background-color: #CFD1D9;\r\n color: #6F758D;\r\n cursor: not-allowed;\r\n }\r\n\r\n `;\r\n\r\n private handleClick(event: Event) {\r\n if (this.disabled) return;\r\n\r\n if (this.type === 'submit') {\r\n const form = this.closest('form');\r\n if (form) form.requestSubmit();\r\n } else if( this.type === 'reset'){\r\n const form = this.closest('form');\r\n if (form) form.reset();\r\n } else if(this.idevent){\r\n const result = this.dispatchEvent(new CustomEvent('randstad-button-click',{detail:this.idevent,composed:true, bubbles: true, cancelable: false}))\r\n }\r\n }\r\n\r\n render() {\r\n const classes = {\r\n button: true,\r\n [this.variant]: true,\r\n loader: this.loader,\r\n [`button-${this.size}`]: this.variant !== 'button-round' && this.variant !== 'button-card',\r\n };\r\n \r\n const dotColor = this.variant === 'button-tertiary' ? 'var(--primary-color)' : 'white';\r\n\r\n return html`\r\n <button\r\n part=\"button\"\r\n type=${this.type}\r\n class=${classMap(classes)}\r\n ?disabled=${this.disabled}\r\n ?aria-busy=${this.loader}\r\n @click=${this.handleClick}\r\n >\r\n ${this.loader\r\n ? html`\r\n <div class=\"loader\">\r\n <span class=\"dot\" style=\"background-color: ${dotColor};\"></span>\r\n <span class=\"dot\" style=\"background-color: ${dotColor};\"></span>\r\n <span class=\"dot\" style=\"background-color: ${dotColor};\"></span>\r\n </div>\r\n `\r\n : html`\r\n ${this.iconSrc && this.variant === 'button-round'\r\n ? html`<img src=${this.iconSrc} alt=\"icon\" class=\"button-icon\" part=\"button-icon\"/>`\r\n : ''}\r\n ${this.iconName && this.variant !== 'button-round' && this.iconPosition === 'left'\r\n ? html`<randstad-icon name=${this.iconName} size=\"24px\"></randstad-icon>`\r\n : ''}\r\n ${this.label ? html`<span part=\"label\">${this.label}</span>` : html`<slot></slot>`}\r\n ${this.iconName && this.variant !== 'button-round' && this.iconPosition === 'right'\r\n ? html`<randstad-icon name=${this.iconName} size=\"24px\"></randstad-icon>`\r\n : ''}\r\n `}\r\n </button>\r\n `;\r\n }\r\n}","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyS, bodyL } from '../styles/fontStyles';\r\n\r\n@customElement('carousel-card')\r\nexport class CarouselCard extends LitElement {\r\n @property({ type: String }) img = '';\r\n @property({ type: String }) name = '';\r\n @property({ type: String }) title = '';\r\n @property({ type: String }) description = '';\r\n @property({ type: String }) buttonLabel = 'Contactanos';\r\n @property({ type: String }) cardId = '';\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n font-family: \"Graphik\", sans-serif;\r\n }\r\n\r\n .image-container {\r\n width: 280px;\r\n height: 390px;\r\n position: relative;\r\n border-radius: 8px;\r\n overflow: hidden;\r\n background-size: cover;\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n display: flex;\r\n align-items: flex-end;\r\n }\r\n\r\n .overlay-gradient,\r\n .overlay-hover {\r\n position: absolute;\r\n inset: 0;\r\n border-radius: 8px;\r\n transition: opacity 1s ease;\r\n z-index: 0;\r\n pointer-events: none;\r\n }\r\n\r\n .overlay-gradient {\r\n background: linear-gradient(180deg, rgba(15, 25, 65, 0) 0%, rgba(15, 25, 65, 0.279522) 48.01%, rgba(15, 25, 65, 0.6) 80.13%, rgba(15, 25, 65, 0.6) 100%);\r\n opacity: 1;\r\n }\r\n\r\n .overlay-hover {\r\n background: #0F1941CC;\r\n opacity: 0;\r\n }\r\n\r\n .image-container:hover .overlay-hover {\r\n opacity: 1;\r\n }\r\n\r\n .content-container {\r\n position: relative;\r\n z-index: 1;\r\n color: #FFFFFF;\r\n padding: 24px;\r\n box-sizing: border-box;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n .title-wrapper {\r\n margin-bottom: 0; /* reset, por si acaso */\r\n }\r\n\r\n .title {\r\n ${bodyL}\r\n margin: 0;\r\n }\r\n\r\n .details {\r\n max-height: 0;\r\n overflow: hidden;\r\n opacity: 0;\r\n transform: translateY(40px);\r\n transition: max-height 0.4s ease, opacity 0.4s ease, transform 0.4s ease;\r\n }\r\n\r\n .image-container:hover .details {\r\n max-height: 240px;\r\n opacity: 1;\r\n transform: translateY(0);\r\n overflow: visible;\r\n }\r\n\r\n .description {\r\n ${bodyS}\r\n }\r\n\r\n ::part(button) {\r\n color: white;\r\n border: 1px solid white;\r\n background: transparent;\r\n text-align: left;\r\n }\r\n\r\n ::part(button):hover {\r\n background-color: rgba(255, 255, 255, 0.1);\r\n }\r\n\r\n ::part(button):active {\r\n background-color: rgba(255, 255, 255, 0.2);\r\n } \r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"image-container\" style=\"background-image: url(${this.img});\">\r\n <div class=\"overlay-gradient\"></div>\r\n <div class=\"overlay-hover\"></div>\r\n <div class=\"content-container\">\r\n <div class=\"title-wrapper\">\r\n <h3 class=\"title\">${this.name}</h3>\r\n </div>\r\n <div class=\"details\">\r\n <p class=\"description\">${this.description}</p>\r\n ${\r\n this.cardId ?\r\n html`<randstad-button\r\n variant=\"button-tertiary\"\r\n .label=${this.buttonLabel}\r\n idevent=${this.cardId}\r\n ></randstad-button>`\r\n :\r\n html`<randstad-button\r\n variant=\"button-tertiary\"\r\n .label=${this.buttonLabel}\r\n ></randstad-button>`\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n}\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyS } from '../styles/fontStyles';\r\n\r\n@customElement('randstad-checkbox')\r\nexport class Checkbox extends LitElement {\r\n @property({ type: Boolean, reflect: true }) checked = false;\r\n @property({ type: Boolean }) error = false;\r\n @property({ type: Boolean }) disabled = false;\r\n\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n max-width: 100%;\r\n }\r\n\r\n label {\r\n ${bodyS}\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n color: var(--secondary-color);\r\n }\r\n\r\n input[type=\"checkbox\"] {\r\n min-width: 24px;\r\n min-height: 24px;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n border: 1px solid var(--secondary-color-20);\r\n appearance: none;\r\n position: relative;\r\n }\r\n\r\n input[type=\"checkbox\"]:checked {\r\n background-color: var(--primary-color);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n input[type=\"checkbox\"]:checked::after {\r\n content: '';\r\n position: absolute;\r\n left: 8px;\r\n top: 4px;\r\n width: 5px;\r\n height: 11px;\r\n border: solid white;\r\n border-width: 0 1px 1px 0;\r\n transform: rotate(45deg);\r\n }\r\n\r\n input[type=\"checkbox\"]:checked:disabled::after {\r\n border-color: var(--secondary-color-40);\r\n }\r\n\r\n label.error input[type=\"checkbox\"]:checked:disabled::after {\r\n border-color: white;\r\n }\r\n\r\n .terms-text {\r\n display: inline;\r\n }\r\n\r\n .terms-text ::slotted(a) {\r\n color: var(--primary-color);\r\n text-decoration: none;\r\n cursor: pointer;\r\n }\r\n\r\n input[type=\"checkbox\"].error,\r\n label.error input[type=\"checkbox\"]:not(:disabled) {\r\n border-color: var(--ui-negative);\r\n }\r\n\r\n /* Hover sin error (solo si no está deshabilitado) */\r\n input[type=\"checkbox\"]:hover:not(:disabled):not(.error) {\r\n box-shadow: 0 0 0 4px var(--secondary-color-10);\r\n }\r\n\r\n /* Hover con error (solo si no está deshabilitado) */\r\n label.error input[type=\"checkbox\"]:hover:not(:disabled) {\r\n box-shadow: 0px 0px 0px 4px #E00F0F1A;\r\n }\r\n\r\n /* ✅ Focus sin error */\r\n input[type=\"checkbox\"]:focus-visible:not(:disabled):not(.error),\r\n label:not(.error) input[type=\"checkbox\"]:focus-visible:not(:disabled) {\r\n outline: none;\r\n box-shadow: 0 0 0 4px var(--secondary-color-10);\r\n }\r\n\r\n /* ❌ Focus con error */\r\n label.error input[type=\"checkbox\"]:focus-visible:not(:disabled) {\r\n outline: none;\r\n box-shadow: 0 0 0 4px #E00F0F1A;\r\n }\r\n\r\n input[type=\"checkbox\"].error:checked,\r\n label.error input[type=\"checkbox\"]:checked {\r\n background-color: var(--ui-negative);\r\n border-color: var(--ui-negative);\r\n }\r\n\r\n input[type=\"checkbox\"]:disabled {\r\n background-color: var(--secondary-color-10);\r\n border-color: var(--secondary-color-20);\r\n cursor: not-allowed;\r\n }\r\n\r\n `;\r\n\r\n private toggleCheck(event: Event) {\r\n this.checked = (event.target as HTMLInputElement).checked;\r\n\r\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\r\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\r\n this.dispatchEvent(new Event('click', { bubbles: true, composed: true }));\r\n }\r\n\r\n render() {\r\n return html`\r\n <label class=\"${this.error ? 'error' : ''} ${this.disabled ? 'disabled' : ''}\">\r\n <input\r\n type=\"checkbox\"\r\n role=\"checkbox\"\r\n aria-checked=${this.checked ? 'true' : 'false'}\r\n .checked=${this.checked}\r\n ?disabled=${this.disabled}\r\n @change=${this.toggleCheck}\r\n @focus=${() => this.setAttribute('focused', '')}\r\n @blur=${() => this.removeAttribute('focused')}\r\n />\r\n <span class=\"terms-text\">\r\n <slot></slot>\r\n </span>\r\n </label>\r\n `;\r\n }\r\n}","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyM, bodyL, bodyXS } from '../styles/fontStyles';\r\n\r\n@customElement('randstad-form')\r\nexport class RandstadForm extends LitElement {\r\n @property({ type: String }) placeholder?: string;\r\n @property({ type: String }) label?: string;\r\n @property({ type: String }) labelColor?: string;\r\n @property({ type: String }) value?: string = '';\r\n @property({ type: String }) size: 'sm' | 'md' | 'lg' = 'md';\r\n @property({ type: String }) icon: 'left' | 'right' | null = null;\r\n @property({ type: String }) helper: string|null = null;\r\n @property({ type: Boolean }) error: boolean = false;\r\n @property({ type: String }) errorMessage: string = '';\r\n @property({ type: Boolean }) disabled: boolean = false;\r\n @property({ type: Boolean }) typing: boolean = false;\r\n @property({ type: String }) type: 'text' | 'password' | 'textarea' = 'text';\r\n @property({ type: String }) tooltipMessage?: string;\r\n @property({ type: String }) linkText?: string;\r\n @property({ type: String }) linkRoute?: string;\r\n @property({ type: Boolean, reflect: true }) isPasswordVisible = false;\r\n @property({ type: Boolean }) cleanButton: boolean = false;\r\n @property({ type: Number }) maxLength?: number;\r\n @property({ type: Boolean }) required = false;\r\n @property({ type: Boolean }) optional = false;\r\n @property({ type: String }) helpLink?: string;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: 'Graphik', sans-serif;\r\n width: 100%;\r\n }\r\n\r\n .form {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n width: 100%;\r\n }\r\n\r\n .label-container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 8px;\r\n }\r\n\r\n .form-label {\r\n ${bodyM}\r\n display: flex;\r\n align-items: baseline;\r\n flex-direction: row;\r\n gap: 4px;\r\n color: var(--label-color, var(--secondary-color-80));\r\n }\r\n\r\n .form-container {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n }\r\n\r\n .form-input {\r\n ${bodyL}\r\n padding: 16px;\r\n border: 1px solid var(--secondary-color-10);\r\n border-radius: 4px;\r\n outline: none;\r\n transition: border-color 0.3s ease, box-shadow 0.3s ease;\r\n width: 100%;\r\n color: var(--secondary-color);\r\n }\r\n\r\n .form.error .form-input {\r\n background-color: var(--ui-negative-5);\r\n border-color: var(--ui-negative);\r\n }\r\n\r\n /* Hover normal (sin error ni foco) */\r\n .form:not(.error):not(:focus-within) .form-input:hover {\r\n box-shadow: 0px 0px 0px 4px var(--form-hover-shadow);\r\n }\r\n\r\n /* Hover con error (sin foco) */\r\n .form.error:not(:focus-within) .form-input:hover {\r\n box-shadow: 0px 0px 0px 4px var(--ui-negative-pink-shadow);\r\n }\r\n\r\n .form-input:focus {\r\n border: 2px solid var(--primary-color)\r\n }\r\n\r\n .form.disabled .form-input {\r\n background-color: var(--secondary-color-10);\r\n cursor: not-allowed;\r\n }\r\n\r\n input::placeholder {\r\n ${bodyL}\r\n color: var(--secondary-color-40);\r\n }\r\n\r\n .input-with-button {\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n }\r\n\r\n .input-with-button input {\r\n width: 100%;\r\n }\r\n \r\n .input-with-button input[type=\"password\"]{\r\n padding-right: 40px; \r\n }\r\n\r\n .input-with-button button {\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 40px;\r\n height: 40px;\r\n }\r\n\r\n .toggle-password randstad-icon {\r\n width: 100%;\r\n height: 100%;\r\n max-width: 32px;\r\n max-height: 32px;\r\n }\r\n\r\n textarea {\r\n ${bodyL}\r\n resize: none;\r\n }\r\n\r\n textarea.form-input {\r\n min-height: 100px;\r\n width: 100%;\r\n }\r\n\r\n .form.disabled textarea.form-input {\r\n background-color: var(--secondary-color-10);\r\n cursor: not-allowed;\r\n }\r\n\r\n .helper-description {\r\n ${bodyM}\r\n color: var(--secondary-color-40);\r\n margin: 0px;\r\n }\r\n\r\n .error-message {\r\n ${bodyM}\r\n color: var(--ui-negative);\r\n margin: 0px;\r\n }\r\n\r\n .link-text {\r\n ${bodyM}\r\n color: var(--primary-color);\r\n cursor: pointer;\r\n text-align: end;\r\n text-decoration: none;\r\n vertical-align: middle;\r\n display: inline;\r\n padding: 0;\r\n margin: 0;\r\n line-height: normal;\r\n }\r\n\r\n .link-text:hover {\r\n color: var(--secondary-color);\r\n }\r\n\r\n randstad-icon {\r\n color: var(--primary-color);\r\n }\r\n\r\n .clean-button {\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 40px;\r\n height: 40px;\r\n }\r\n\r\n .clean-button randstad-icon {\r\n width: 24px;\r\n height: 24px;\r\n }\r\n\r\n // TOOLTIP, NO SE ESTÁ USANDO EN FORMS EN ESTE MOMENTO, PERO SE DEJA POR SI SE NECESITA\r\n .tooltip-wrapper {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n }\r\n\r\n .tooltip {\r\n visibility: hidden;\r\n position: absolute;\r\n top: auto;\r\n right: 125%;\r\n left: auto;\r\n transform: none;\r\n background-color: #333;\r\n color: #fff;\r\n padding: 8px 12px;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n line-height: 20px;\r\n white-space: nowrap;\r\n z-index: 10;\r\n opacity: 0;\r\n transition: opacity 0.2s ease;\r\n }\r\n\r\n .tooltip::after {\r\n content: '';\r\n position: absolute;\r\n right: -6px;\r\n bottom: 50%;\r\n transform: translateY(50%);\r\n width: 0;\r\n height: 0;\r\n border-style: solid;\r\n border-width: 6px 0 6px 6px;\r\n border-color: transparent transparent transparent #333;\r\n }\r\n\r\n .tooltip-wrapper:hover .tooltip {\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n\r\n .required {\r\n color: var(--ui-negative);\r\n }\r\n\r\n .optional {\r\n color: var(--secondary-color-60);\r\n ${bodyXS}\r\n }\r\n `;\r\n\r\n private togglePassword(event: Event) {\r\n this.isPasswordVisible = !this.isPasswordVisible;\r\n const input = (event.currentTarget as HTMLElement).parentElement?.querySelector('input');\r\n if (input) {\r\n input.type = this.isPasswordVisible ? 'text' : 'password';\r\n }\r\n this.requestUpdate();\r\n }\r\n\r\n private handleInput(event: Event) {\r\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\r\n const newValue = target.value;\r\n if (this.maxLength !== undefined && this.type !== 'textarea') {\r\n this.value = newValue.slice(0, this.maxLength);\r\n } else {\r\n this.value = newValue;\r\n }\r\n this.dispatchEvent(new CustomEvent('valueChanged', { detail: this.value }));\r\n this.dispatchEvent(new Event('input', { bubbles: true }));\r\n this.requestUpdate();\r\n }\r\n\r\n private handleClear() {\r\n this.value = '';\r\n this.dispatchEvent(new CustomEvent('valueChanged', { detail: this.value }));\r\n this.dispatchEvent(new Event('input', { bubbles: true }));\r\n this.requestUpdate();\r\n }\r\n\r\n private handleLinkClick(event: Event) {\r\n event.preventDefault();\r\n if (this.linkRoute) {\r\n this.dispatchEvent(\r\n new CustomEvent('linkClicked', {\r\n detail: this.linkRoute,\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n\r\n private handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n const submitEvent = new Event('submit', {\r\n bubbles: true,\r\n composed: true,\r\n cancelable: true,\r\n });\r\n\r\n const form = this.closest('form');\r\n if (form) {\r\n form.dispatchEvent(submitEvent);\r\n }\r\n }\r\n }\r\n\r\n\r\n render() {\r\n const showCleanButton = this.cleanButton && this.value && this.type !== 'password' && this.type !== 'textarea';\r\n\r\n return html`\r\n <div\r\n class=\"form ${this.error ? 'error' : ''} ${this.disabled ? 'disabled' : ''}\"\r\n style=${this.labelColor ? `--label-color: ${this.labelColor}` : nothing}\r\n >\r\n ${this.label ? html`\r\n <div class=\"label-container\">\r\n <label class=\"form-label\">\r\n ${this.label}\r\n ${this.required\r\n ? html`<span class=\"required\">*</span>`\r\n : this.optional\r\n ? html`<span class=\"optional\">opcional</span>`\r\n : nothing}\r\n </label>\r\n ${this.helpLink\r\n ? html`\r\n <a class=\"tooltip-wrapper\" href=\"${this.helpLink}\">\r\n <randstad-icon\r\n name=\"ayuda\"\r\n size=\"20px\">\r\n </randstad-icon>\r\n </a>\r\n `\r\n : nothing}\r\n </div>\r\n ` : nothing}\r\n\r\n <div class=\"form-container\">\r\n ${this.icon === 'left' ? html`<span class=\"icon left\"></span>` : nothing}\r\n\r\n <div class=\"input-with-button\">\r\n ${this.type === 'textarea'\r\n ? html`\r\n <textarea\r\n class=\"form-input\"\r\n placeholder=${this.placeholder || ''}\r\n .value=${this.value}\r\n ?disabled=${this.disabled}\r\n @input=${this.handleInput}\r\n @keydown=${this.handleKeyDown}\r\n maxlength=${this.maxLength ?? nothing}\r\n ></textarea>`\r\n : html`\r\n <input\r\n class=\"form-input\"\r\n type=${this.type === 'password' && !this.isPasswordVisible ? 'password' : 'text'}\r\n placeholder=${this.placeholder || ''}\r\n .value=${this.value}\r\n ?disabled=${this.disabled}\r\n @input=${this.handleInput}\r\n @keydown=${this.handleKeyDown}\r\n maxlength=${this.maxLength ?? nothing}\r\n />\r\n\r\n ${this.type === 'password'\r\n ? html`<button type=\"button\" class=\"toggle-password\" @click=${this.togglePassword}>\r\n ${this.isPasswordVisible\r\n ? html`<randstad-icon name='eye_crossed' size=\"24px\"></randstad-icon>`\r\n : html`<randstad-icon name='eye' size=\"24px\"></randstad-icon>`}\r\n </button>`\r\n : nothing}\r\n\r\n ${showCleanButton\r\n ? html`<button type=\"button\" class=\"clean-button\" @click=${this.handleClear}>\r\n <randstad-icon name=\"close\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>\r\n </button>`\r\n : nothing}\r\n `}\r\n </div>\r\n\r\n ${this.icon === 'right' ? html`<span class=\"icon right\"></span>` : nothing}\r\n </div>\r\n\r\n ${this.error ? html`\r\n <p class=\"error-message\">\r\n ${this.errorMessage ? this.errorMessage : html`<slot name=\"error-extended\"></slot>`}\r\n </p>` : nothing}\r\n\r\n ${this.linkText && this.linkRoute\r\n ? html\r\n `<div style=\"text-align: end;\">\r\n <a class=\"link-text\" @click=${this.handleLinkClick}>${this.linkText}</a>\r\n </div>`\r\n : nothing}\r\n\r\n ${this.helper ? html`<p class=\"helper-description\">${this.helper}</p>` : nothing}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyM, bodyXS } from '../styles/fontStyles';\r\n\r\n@customElement('randstad-form-group')\r\nexport class FormGroup extends LitElement {\r\n @property({ type: String }) label = '';\r\n @property({ type: String }) helper?: string;\r\n @property({ type: Boolean }) error = false;\r\n @property({ type: String }) errorMessage = '';\r\n @property({ type: Boolean }) required = false;\r\n @property({ type: Boolean }) optional = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: flex;\r\n flex-direction: column;\r\n font-family: 'Graphik', sans-serif;\r\n gap: 8px;\r\n width: 100%;\r\n }\r\n\r\n .form-label {\r\n ${bodyM}\r\n display: flex;\r\n align-items: baseline;\r\n flex-direction: row;\r\n gap: 4px;\r\n color: var(--label-color, var(--secondary-color-80));\r\n }\r\n\r\n .fields {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px; /* espaciado entre inputs */\r\n }\r\n\r\n .helper {\r\n ${bodyM}\r\n color: var(--secondary-color-40);\r\n }\r\n\r\n .error {\r\n ${bodyM}\r\n color: var(--ui-negative);\r\n }\r\n\r\n .required {\r\n color: var(--ui-negative);\r\n }\r\n\r\n .optional {\r\n color: var(--secondary-color-60);\r\n ${bodyXS}\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <label class=\"form-label\">\r\n ${this.label}\r\n ${this.required\r\n ? html`<span class=\"required\">*</span>`\r\n : this.optional\r\n ? html`<span class=\"optional\">opcional</span>`\r\n : nothing}\r\n </label>\r\n\r\n <div class=\"fields\">\r\n <slot></slot>\r\n </div>\r\n\r\n ${this.error\r\n ? html`<span class=\"error\">${this.errorMessage}</span>`\r\n : this.helper\r\n ? html`<span class=\"helper\">${this.helper}</span>`\r\n : null}\r\n `;\r\n }\r\n}\r\n","import { LitElement, css } from 'lit';\r\nimport { property } from 'lit/decorators.js';\r\n\r\nexport class IconComponent extends LitElement {\r\n @property({ type: String }) name = '';\r\n @property({ type: String }) size = '24px';\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n width: var(--icon-size, 24px);\r\n height: var(--icon-size, 24px);\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n svg {\r\n width: var(--icon-size, 24px);\r\n height: var(--icon-size, 24px);\r\n fill: var(--icon-color, currentColor);\r\n }\r\n `;\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.style.setProperty('--icon-size', this.size);\r\n }\r\n\r\n updated(changedProps: Map<string, unknown>) {\r\n if (changedProps.has('size')) {\r\n this.style.setProperty('--icon-size', this.size);\r\n }\r\n }\r\n\r\n async loadIcon() {\r\n try {\r\n const response = await fetch(`/assets/icons/${this.name}.svg`);\r\n if (!response.ok) throw new Error('Icon not found');\r\n const svgText = await response.text();\r\n\r\n const parser = new DOMParser();\r\n const svgDoc = parser.parseFromString(svgText, 'image/svg+xml');\r\n const svgElement = svgDoc.querySelector('svg');\r\n\r\n if (svgElement) {\r\n svgElement.removeAttribute('fill');\r\n svgElement.setAttribute('width', this.size);\r\n svgElement.setAttribute('height', this.size);\r\n svgElement.querySelectorAll('[fill]').forEach(el => el.removeAttribute('fill'));\r\n svgElement.setAttribute('fill', 'currentColor');\r\n if ('innerHTML' in this.renderRoot) {\r\n this.renderRoot.innerHTML = '';\r\n }\r\n this.renderRoot.appendChild(svgElement);\r\n } else {\r\n throw new Error('No se encontró un elemento SVG válido');\r\n }\r\n } catch (error) {\r\n console.error(`❌ Error cargando icono ${this.name}:`, error);\r\n if ('innerHTML' in this.renderRoot) {\r\n this.renderRoot.innerHTML = '<span>⚠️</span>';\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n this.loadIcon();\r\n return null;\r\n }\r\n}\r\n\r\ncustomElements.define('randstad-icon', IconComponent);\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyM } from '../styles/fontStyles';\r\n\r\n@customElement('randstad-notice')\r\nexport class RandstadNotice extends LitElement {\r\n @property({ type: String }) type: string = 'informative';\r\n @property({ type: String }) icon: string = 'info';\r\n @property({ type: String }) message: string = 'Este es un mensaje.';\r\n @property({ type: Boolean }) open: boolean = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: 'Graphik', sans-serif;\r\n }\r\n\r\n .container {\r\n ${bodyM}\r\n display: flex;\r\n align-items: flex-start;\r\n gap: 8px;\r\n border-radius: 8px;\r\n padding: 16px;\r\n color: var(--secondary-color);\r\n }\r\n\r\n .icon {\r\n font-size: 34px;\r\n flex-shrink: 0;\r\n }\r\n\r\n .hidden {\r\n display: none;\r\n }\r\n\r\n .success {\r\n border: 1px solid var(--ui-positive);\r\n background: var(--ui-positive-5);\r\n --icon-color: var(--ui-positive);\r\n }\r\n\r\n .error {\r\n border: 1px solid var(--ui-negative);\r\n background: var(--ui-negative-5);\r\n --icon-color: var(--ui-negative);\r\n }\r\n\r\n .warning {\r\n border: 1px solid var(--ui-warning);\r\n background: var(--ui-warning-10);\r\n --icon-color: var(--ui-warning);\r\n }\r\n \r\n .informative {\r\n border: 1px solid var(--ui-informative);\r\n background: var(--ui-informative-10);\r\n --icon-color: var(--ui-informative);\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"container ${this.open ? '' : 'hidden'} ${this.type}\">\r\n <randstad-icon class=\"icon\" name=\"${this.icon}\" size=\"24px\" style=\"color: var(--icon-color);\"></randstad-icon>\r\n <span class=\"message\">${this.message}</span>\r\n </div>\r\n `;\r\n }\r\n}","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { titleS, bodyM } from '../styles/fontStyles';\r\nimport '../components/Notice';\r\nimport '../components/Button';\r\n\r\n@customElement('custom-modal')\r\nexport class CustomModal extends LitElement {\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n @property({ type: String }) title = 'Título del modal';\r\n @property({ type: String }) subtitle?: string;\r\n @property({ type: Boolean }) showNotice = false;\r\n @property({ type: String }) noticeType: 'success' | 'error' | 'warning' | 'informative' = 'informative';\r\n @property({ type: String }) noticeMessage = '';\r\n @property({ type: String }) noticeIcon = 'info';\r\n\r\n @property({ type: Boolean }) showPrimaryButton = false;\r\n @property({ type: String }) primaryButtonLabel = 'Aceptar';\r\n\r\n @property({ type: Boolean }) showSecondaryButton = false;\r\n @property({ type: String }) secondaryButtonLabel = 'Cancelar';\r\n\r\n @state() private scrollable = false;\r\n\r\n static styles = css`\r\n :host {\r\n font-family: 'Graphik', sans-serif;\r\n display: none;\r\n }\r\n\r\n :host([open]) {\r\n display: block;\r\n z-index: 9999;\r\n }\r\n\r\n .overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: rgba(0, 0, 0, 0.5);\r\n overflow-y: auto;\r\n padding: 40px 16px;\r\n z-index: 9999;\r\n display: flex;\r\n justify-content: center;\r\n align-items: flex-start;\r\n }\r\n\r\n .modal {\r\n background: var(--brand-off-white);\r\n width: 100%;\r\n max-width: 500px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 40px;\r\n border-radius: 8px;\r\n }\r\n\r\n .modal.scrollable {\r\n max-height: 90vh;\r\n }\r\n\r\n .modal-body.scrollable {\r\n overflow-y: auto;\r\n flex: 1;\r\n }\r\n\r\n .modal-body {\r\n display: flex;\r\n flex-direction: column;\r\n padding: 24px;\r\n gap: 16px;\r\n }\r\n\r\n .modal-header {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 24px;\r\n border-bottom: 1px solid var(--secondary-color-20);\r\n }\r\n\r\n .modal-header-content {\r\n display: flex;\r\n gap: 32px;\r\n width: 100%;\r\n justify-content: space-between;\r\n align-items: center;\r\n }\r\n\r\n .titles-container {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n flex-grow: 1;\r\n }\r\n\r\n .modal-title {\r\n ${titleS}\r\n margin: 0;\r\n color: var(--secondary-color);\r\n }\r\n\r\n .modal-subtitle {\r\n ${bodyM}\r\n margin: 0;\r\n color: var(--secondary-color-60);\r\n }\r\n\r\n .modal-header randstad-notice {\r\n width: 100%;\r\n }\r\n\r\n .modal-close {\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 0;\r\n }\r\n\r\n .modal-footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n flex-direction: row;\r\n padding: 24px;\r\n gap: 16px;\r\n border-top: 1px solid var(--secondary-color-20);\r\n }\r\n\r\n .modal-footer.one-button randstad-button {\r\n width: 100%;\r\n }\r\n\r\n .modal-footer.two-buttons randstad-button {\r\n width: 50%;\r\n }\r\n\r\n @media (max-width: 940px) {\r\n .modal-footer.two-buttons {\r\n flex-direction: column;\r\n }\r\n\r\n .modal-footer.two-buttons randstad-button {\r\n width: 100%;\r\n }\r\n }\r\n `;\r\n\r\n private closeModal() {\r\n this.dispatchEvent(new CustomEvent('modal-close'));\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.setScrollableMode();\r\n window.addEventListener('resize', this.setScrollableMode);\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n window.removeEventListener('resize', this.setScrollableMode);\r\n }\r\n\r\n private setScrollableMode = () => {\r\n this.scrollable = window.innerWidth > 940;\r\n };\r\n\r\n render() {\r\n return html`\r\n <div class=\"overlay\" role=\"dialog\" aria-modal=\"true\">\r\n <div class=\"modal ${this.scrollable ? 'scrollable' : ''}\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-header-content\">\r\n <div class=\"titles-container\">\r\n <div class=\"modal-title\">${this.title}</div>\r\n ${this.subtitle\r\n ? html`<div class=\"modal-subtitle\">${this.subtitle}</div>`\r\n : nothing}\r\n </div>\r\n <button class=\"modal-close\" @click=${this.closeModal} aria-label=\"Cerrar modal\">\r\n <randstad-icon name=\"close\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>\r\n </button>\r\n </div>\r\n ${this.showNotice\r\n ? html`\r\n <randstad-notice\r\n .open=${true}\r\n .type=${this.noticeType}\r\n .icon=${this.noticeIcon}\r\n .message=${this.noticeMessage}\r\n ></randstad-notice>\r\n `\r\n : nothing}\r\n </div>\r\n <div class=\"modal-body ${this.scrollable ? 'scrollable' : ''}\">\r\n <slot name=\"content\"></slot>\r\n </div>\r\n <div class=\"modal-footer ${this.showPrimaryButton && this.showSecondaryButton ? 'two-buttons' : 'one-button'}\">\r\n ${this.showPrimaryButton\r\n ? html`\r\n <randstad-button\r\n variant=\"button-primary\"\r\n size=\"md\"\r\n @click=${() => this.dispatchEvent(new CustomEvent('primary-click'))}\r\n label=${this.primaryButtonLabel}\r\n ></randstad-button>\r\n `\r\n : nothing}\r\n ${this.showSecondaryButton\r\n ? html`\r\n <randstad-button\r\n variant=\"button-secondary\"\r\n size=\"md\"\r\n @click=${() => this.dispatchEvent(new CustomEvent('secondary-click'))}\r\n label=${this.secondaryButtonLabel}\r\n ></randstad-button>\r\n `\r\n : nothing}\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { titleXS, bodyM, titleXXS } from '../styles/fontStyles';\r\nimport '../components/Button';\r\nimport '../components/Icon';\r\n\r\ninterface PopupAction {\r\n icon: string;\r\n label: string;\r\n value: string;\r\n}\r\n\r\n@customElement('custom-popup')\r\nexport class CustomPopup extends LitElement {\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n @property({ type: String }) type: 'default' | 'stacked' | 'other' = 'default';\r\n @property({ type: String }) icon = 'warning';\r\n @property({ type: String }) title = 'Título del Popup';\r\n @property({ type: String }) description = 'Descripción del popup';\r\n @property({ type: String }) width = '400px';\r\n @property({ type: String }) buttonText = 'Aceptar';\r\n @property({ type: String }) confirmText = 'Sí';\r\n @property({ type: String }) cancelText = 'No';\r\n @property({ type: Array }) stackedActions: PopupAction[] = [];\r\n\r\n\r\n static styles = css`\r\n :host {\r\n display: none;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n justify-content: center;\r\n align-items: center;\r\n font-family: \"Graphik\", sans-serif;\r\n }\r\n\r\n :host([open]) {\r\n display: flex;\r\n }\r\n\r\n @media (max-width:500px){\r\n .popup {\r\n width: 100%;\r\n margin: 0px 25px;\r\n }\r\n }\r\n @media (min-width:501px){\r\n .popup {\r\n width: var(--popup-width, 358px);\r\n }\r\n }\r\n\r\n .popup {\r\n background: var(--white);\r\n padding: 24px;\r\n border-radius: 16px;\r\n text-align: center;\r\n animation: fadeIn 0.2s ease-in-out;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n align-items: center;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from { opacity: 0; transform: scale(0.9); }\r\n to { opacity: 1; transform: scale(1); }\r\n }\r\n\r\n .popup-content {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n width: 100%;\r\n }\r\n\r\n .titles-container {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n align-items: center; \r\n }\r\n\r\n .popup-title {\r\n ${titleXS}\r\n margin: 0;\r\n color: var(--secondary-color-80);\r\n }\r\n\r\n .popup-description {\r\n ${bodyM}\r\n margin: 0;\r\n color: var(--secondary-color-60);\r\n }\r\n\r\n .buttons-container {\r\n margin-top: 12px;\r\n display: flex;\r\n gap: 10px;\r\n }\r\n\r\n .buttons-container ::slotted(randstad-button),\r\n .buttons-container randstad-button {\r\n flex: 1 1 50%;\r\n }\r\n\r\n :host([type=\"stacked\"]) .buttons-container {\r\n flex-direction: column;\r\n gap: 12px;\r\n }\r\n\r\n .popup-actions {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n }\r\n\r\n .action-item {\r\n ${titleXXS};\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n cursor: pointer;\r\n color: var(--secondary-color);\r\n padding: 16px;\r\n border-radius: 8px;\r\n transition: background 0.2s;\r\n }\r\n\r\n .action-item:hover {\r\n background: var(--secondary-color-10, #f0f4ff);\r\n }\r\n\r\n .icon-circle {\r\n width: 32px;\r\n height: 32px;\r\n background: var(--primary-color-20, #D3E3F7);\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n `;\r\n\r\n firstUpdated() {\r\n if (this.open) {\r\n const button = this.renderRoot.querySelector('randstad-button');\r\n if (button) (button as HTMLElement).focus();\r\n }\r\n this.addEventListener('click', this._onBackgroundClick);\r\n }\r\n\r\n private _onBackgroundClick = (event: MouseEvent) => {\r\n const path = event.composedPath();\r\n const popupContainer = this.renderRoot.querySelector('.popup');\r\n\r\n if (popupContainer && !path.includes(popupContainer)) {\r\n this.dispatchEvent(new CustomEvent('popup-close', { detail: null }));\r\n this.open = false;\r\n }\r\n };\r\n\r\n disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this.removeEventListener('click', this._onBackgroundClick);\r\n }\r\n\r\n closePopup(response: boolean | string) {\r\n this.dispatchEvent(new CustomEvent('popup-close', { detail: response }));\r\n this.open = false;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"popup\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n ${this.type !== 'default' ? html`aria-labelledby=\"popup-title\"` : nothing}\r\n aria-describedby=\"popup-description\"\r\n >\r\n ${this.type !== 'stacked' && this.icon\r\n ? html`<img src=\"/assets/icons/${this.icon}\" alt=\"\" width=\"56\" height=\"56\" />`\r\n : nothing}\r\n\r\n <div class=\"popup-content\">\r\n ${this.type === 'default'\r\n ? html`\r\n <div class=\"titles-container\">\r\n <p id=\"popup-description\" class=\"popup-description\">${this.description}</p>\r\n </div>\r\n <div class=\"buttons-container\">\r\n <randstad-button\r\n variant=\"button-primary\"\r\n size=\"md\"\r\n @click=${() => this.closePopup(true)}\r\n label=${this.buttonText}\r\n ></randstad-button>\r\n </div>\r\n `\r\n : this.type === 'stacked'\r\n ? html`\r\n <div class=\"popup-actions\">\r\n ${this.stackedActions.map(\r\n action => html`\r\n <div\r\n class=\"action-item\"\r\n @click=${() => this.closePopup(action.value)}\r\n >\r\n <div class=\"icon-circle\">\r\n <randstad-icon\r\n name=${action.icon}\r\n size=\"24px\"\r\n style=\"--icon-color: var(--primary-color);\"\r\n ></randstad-icon>\r\n </div>\r\n <span>${action.label}</span>\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `\r\n : html`\r\n <div class=\"titles-container\">\r\n <h2 id=\"popup-title\" class=\"popup-title\">${this.title}</h2>\r\n <p id=\"popup-description\" class=\"popup-description\">${this.description}</p>\r\n </div>\r\n <div class=\"buttons-container\">\r\n <randstad-button\r\n variant=\"button-secondary\"\r\n size=\"md\"\r\n @click=${() => this.closePopup(false)}\r\n label=${this.cancelText}\r\n ></randstad-button>\r\n <randstad-button\r\n variant=\"button-primary\"\r\n size=\"md\"\r\n @click=${() => this.closePopup(true)}\r\n label=${this.confirmText}\r\n ></randstad-button>\r\n </div>\r\n `}\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n}","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyXS } from '../styles/fontStyles';\r\n\r\n@customElement('progress-circle')\r\nexport class ProgressCircle extends LitElement {\r\n @property({ type: Number }) value = 0;\r\n @property({ type: Number }) max = 5;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n width: 64px;\r\n height: 64px;\r\n }\r\n\r\n svg {\r\n width: 64px;\r\n height: 64px;\r\n }\r\n\r\n .circle-text {\r\n ${bodyXS};\r\n text-align: center;\r\n vertical-align: middle;\r\n fill: var(--randstad-dark-blue-40);\r\n text-anchor: middle;\r\n dominant-baseline: middle;\r\n }\r\n\r\n circle.bg {\r\n stroke: var(--primary-light-blue-20);\r\n }\r\n\r\n circle.fg {\r\n stroke: var(--primary-light-blue);\r\n stroke-linecap: round;\r\n }\r\n `;\r\n\r\n render() {\r\n const strokeWidth = 6;\r\n const radius = 28; // 64/2 - strokeWidth\r\n const circumference = 2 * Math.PI * radius;\r\n\r\n const safeMax = Math.max(this.max, 1);\r\n const progress = Math.min(this.value / safeMax, 1);\r\n const offset = circumference * (1 - progress);\r\n\r\n return html`\r\n <svg\r\n viewBox=\"0 0 64 64\"\r\n role=\"img\"\r\n aria-label=\"Progreso: ${this.value} de ${this.max}\"\r\n >\r\n <!-- Fondo -->\r\n <circle\r\n class=\"bg\"\r\n cx=\"32\"\r\n cy=\"32\"\r\n r=\"${radius}\"\r\n stroke-width=\"${strokeWidth}\"\r\n fill=\"none\"\r\n />\r\n <!-- Progreso -->\r\n <circle\r\n class=\"fg\"\r\n cx=\"32\"\r\n cy=\"32\"\r\n r=\"${radius}\"\r\n stroke-width=\"${strokeWidth}\"\r\n fill=\"none\"\r\n stroke-dasharray=\"${circumference}\"\r\n stroke-dashoffset=\"${offset}\"\r\n transform=\"rotate(-90 32 32)\"\r\n />\r\n <!-- Texto -->\r\n <text x=\"32\" y=\"34\" class=\"circle-text\">\r\n ${this.value} de ${this.max}\r\n </text>\r\n </svg>\r\n `;\r\n }\r\n}\r\n","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { isServer } from 'lit';\n/**\n * A key to retrieve an `Attachable` element's `AttachableController` from a\n * global `MutationObserver`.\n */\nconst ATTACHABLE_CONTROLLER = Symbol('attachableController');\nlet FOR_ATTRIBUTE_OBSERVER;\nif (!isServer) {\n /**\n * A global `MutationObserver` that reacts to `for` attribute changes on\n * `Attachable` elements. If the `for` attribute changes, the controller will\n * re-attach to the new referenced element.\n */\n FOR_ATTRIBUTE_OBSERVER = new MutationObserver((records) => {\n for (const record of records) {\n // When a control's `for` attribute changes, inform its\n // `AttachableController` to update to a new control.\n record.target[ATTACHABLE_CONTROLLER]?.hostConnected();\n }\n });\n}\n/**\n * A controller that provides an implementation for `Attachable` elements.\n *\n * @example\n * ```ts\n * class MyElement extends LitElement implements Attachable {\n * get control() { return this.attachableController.control; }\n *\n * private readonly attachableController = new AttachableController(\n * this,\n * (previousControl, newControl) => {\n * previousControl?.removeEventListener('click', this.handleClick);\n * newControl?.addEventListener('click', this.handleClick);\n * }\n * );\n *\n * // Implement remaining `Attachable` properties/methods that call the\n * // controller's properties/methods.\n * }\n * ```\n */\nexport class AttachableController {\n get htmlFor() {\n return this.host.getAttribute('for');\n }\n set htmlFor(htmlFor) {\n if (htmlFor === null) {\n this.host.removeAttribute('for');\n }\n else {\n this.host.setAttribute('for', htmlFor);\n }\n }\n get control() {\n if (this.host.hasAttribute('for')) {\n if (!this.htmlFor || !this.host.isConnected) {\n return null;\n }\n return this.host.getRootNode().querySelector(`#${this.htmlFor}`);\n }\n return this.currentControl || this.host.parentElement;\n }\n set control(control) {\n if (control) {\n this.attach(control);\n }\n else {\n this.detach();\n }\n }\n /**\n * Creates a new controller for an `Attachable` element.\n *\n * @param host The `Attachable` element.\n * @param onControlChange A callback with two parameters for the previous and\n * next control. An `Attachable` element may perform setup or teardown\n * logic whenever the control changes.\n */\n constructor(host, onControlChange) {\n this.host = host;\n this.onControlChange = onControlChange;\n this.currentControl = null;\n host.addController(this);\n host[ATTACHABLE_CONTROLLER] = this;\n FOR_ATTRIBUTE_OBSERVER?.observe(host, { attributeFilter: ['for'] });\n }\n attach(control) {\n if (control === this.currentControl) {\n return;\n }\n this.setCurrentControl(control);\n // When imperatively attaching, remove the `for` attribute so\n // that the attached control is used instead of a referenced one.\n this.host.removeAttribute('for');\n }\n detach() {\n this.setCurrentControl(null);\n // When imperatively detaching, add an empty `for=\"\"` attribute. This will\n // ensure the control is `null` rather than the `parentElement`.\n this.host.setAttribute('for', '');\n }\n /** @private */\n hostConnected() {\n this.setCurrentControl(this.control);\n }\n /** @private */\n hostDisconnected() {\n this.setCurrentControl(null);\n }\n setCurrentControl(control) {\n this.onControlChange(this.currentControl, control);\n this.currentControl = control;\n }\n}\n//# sourceMappingURL=attachable-controller.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { isServer, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { AttachableController, } from '../../internal/controller/attachable-controller.js';\n/**\n * Events that the focus ring listens to.\n */\nconst EVENTS = ['focusin', 'focusout', 'pointerdown'];\n/**\n * A focus ring component.\n *\n * @fires visibility-changed {Event} Fired whenever `visible` changes.\n */\nexport class FocusRing extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Makes the focus ring visible.\n */\n this.visible = false;\n /**\n * Makes the focus ring animate inwards instead of outwards.\n */\n this.inward = false;\n this.attachableController = new AttachableController(this, this.onControlChange.bind(this));\n }\n get htmlFor() {\n return this.attachableController.htmlFor;\n }\n set htmlFor(htmlFor) {\n this.attachableController.htmlFor = htmlFor;\n }\n get control() {\n return this.attachableController.control;\n }\n set control(control) {\n this.attachableController.control = control;\n }\n attach(control) {\n this.attachableController.attach(control);\n }\n detach() {\n this.attachableController.detach();\n }\n connectedCallback() {\n super.connectedCallback();\n // Needed for VoiceOver, which will create a \"group\" if the element is a\n // sibling to other content.\n this.setAttribute('aria-hidden', 'true');\n }\n /** @private */\n handleEvent(event) {\n if (event[HANDLED_BY_FOCUS_RING]) {\n // This ensures the focus ring does not activate when multiple focus rings\n // are used within a single component.\n return;\n }\n switch (event.type) {\n default:\n return;\n case 'focusin':\n this.visible = this.control?.matches(':focus-visible') ?? false;\n break;\n case 'focusout':\n case 'pointerdown':\n this.visible = false;\n break;\n }\n event[HANDLED_BY_FOCUS_RING] = true;\n }\n onControlChange(prev, next) {\n if (isServer)\n return;\n for (const event of EVENTS) {\n prev?.removeEventListener(event, this);\n next?.addEventListener(event, this);\n }\n }\n update(changed) {\n if (changed.has('visible')) {\n // This logic can be removed once the `:has` selector has been introduced\n // to Firefox. This is necessary to allow correct submenu styles.\n this.dispatchEvent(new Event('visibility-changed'));\n }\n super.update(changed);\n }\n}\n__decorate([\n property({ type: Boolean, reflect: true })\n], FocusRing.prototype, \"visible\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], FocusRing.prototype, \"inward\", void 0);\nconst HANDLED_BY_FOCUS_RING = Symbol('handledByFocusRing');\n//# sourceMappingURL=focus-ring.js.map","/**\n * @license\n * Copyright 2024 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n// Generated stylesheet for ./focus/internal/focus-ring-styles.css.\nimport { css } from 'lit';\nexport const styles = css `:host{animation-delay:0s,calc(var(--md-focus-ring-duration, 600ms)*.25);animation-duration:calc(var(--md-focus-ring-duration, 600ms)*.25),calc(var(--md-focus-ring-duration, 600ms)*.75);animation-timing-function:cubic-bezier(0.2, 0, 0, 1);box-sizing:border-box;color:var(--md-focus-ring-color, var(--md-sys-color-secondary, #625b71));display:none;pointer-events:none;position:absolute}:host([visible]){display:flex}:host(:not([inward])){animation-name:outward-grow,outward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));inset:calc(-1*var(--md-focus-ring-outward-offset, 2px));outline:var(--md-focus-ring-width, 3px) solid currentColor}:host([inward]){animation-name:inward-grow,inward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border:var(--md-focus-ring-width, 3px) solid currentColor;inset:var(--md-focus-ring-inward-offset, 0px)}@keyframes outward-grow{from{outline-width:0}to{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes outward-shrink{from{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-grow{from{border-width:0}to{border-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-shrink{from{border-width:var(--md-focus-ring-active-width, 8px)}}@media(prefers-reduced-motion){:host{animation:none}}\n`;\n//# sourceMappingURL=focus-ring-styles.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { FocusRing } from './internal/focus-ring.js';\nimport { styles } from './internal/focus-ring-styles.js';\n/**\n * TODO(b/267336424): add docs\n *\n * @final\n * @suppress {visibility}\n */\nlet MdFocusRing = class MdFocusRing extends FocusRing {\n};\nMdFocusRing.styles = [styles];\nMdFocusRing = __decorate([\n customElement('md-focus-ring')\n], MdFocusRing);\nexport { MdFocusRing };\n//# sourceMappingURL=md-focus-ring.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * Easing functions to use for web animations.\n *\n * **NOTE:** `EASING.EMPHASIZED` is approximated with unknown accuracy.\n *\n * TODO(b/241113345): replace with tokens\n */\nexport const EASING = {\n STANDARD: 'cubic-bezier(0.2, 0, 0, 1)',\n STANDARD_ACCELERATE: 'cubic-bezier(.3,0,1,1)',\n STANDARD_DECELERATE: 'cubic-bezier(0,0,0,1)',\n EMPHASIZED: 'cubic-bezier(.3,0,0,1)',\n EMPHASIZED_ACCELERATE: 'cubic-bezier(.3,0,.8,.15)',\n EMPHASIZED_DECELERATE: 'cubic-bezier(.05,.7,.1,1)',\n};\n/**\n * Creates an `AnimationSignal` that can be used to cancel a previous task.\n *\n * @example\n * class MyClass {\n * private labelAnimationSignal = createAnimationSignal();\n *\n * private async animateLabel() {\n * // Start of the task. Previous tasks will be canceled.\n * const signal = this.labelAnimationSignal.start();\n *\n * // Do async work...\n * if (signal.aborted) {\n * // Use AbortSignal to check if a request was made to abort after some\n * // asynchronous work.\n * return;\n * }\n *\n * const animation = this.animate(...);\n * // Add event listeners to be notified when the task should be canceled.\n * signal.addEventListener('abort', () => {\n * animation.cancel();\n * });\n *\n * animation.addEventListener('finish', () => {\n * // Tell the signal that the current task is finished.\n * this.labelAnimationSignal.finish();\n * });\n * }\n * }\n *\n * @return An `AnimationSignal`.\n */\nexport function createAnimationSignal() {\n // The current animation's AbortController\n let animationAbortController = null;\n return {\n start() {\n // Tell the previous animation to cancel.\n animationAbortController?.abort();\n // Set up a new AbortController for the current animation.\n animationAbortController = new AbortController();\n // Provide the AbortSignal so that the caller can check aborted status\n // and add listeners.\n return animationAbortController.signal;\n },\n finish() {\n animationAbortController = null;\n },\n };\n}\n/**\n * Returns a function which can be used to throttle function calls\n * mapped to a key via a given function that should produce a promise that\n * determines the throttle amount (defaults to requestAnimationFrame).\n */\nexport function createThrottle() {\n const stack = new Set();\n return async (key = '', cb, timeout = async () => {\n await new Promise(requestAnimationFrame);\n }) => {\n if (!stack.has(key)) {\n stack.add(key);\n await timeout();\n if (stack.has(key)) {\n stack.delete(key);\n cb();\n }\n }\n };\n}\n/**\n * Parses an number in milliseconds from a css time value\n */\nexport function msFromTimeCSSValue(value) {\n const match = value.trim().match(/([\\d.]+)(\\s*s$)?/);\n const time = match?.[1];\n const seconds = match?.[2];\n return Number(time ?? 0) * (seconds ? 1000 : 1);\n}\n//# sourceMappingURL=animation.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { html, isServer, LitElement } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { AttachableController, } from '../../internal/controller/attachable-controller.js';\nimport { EASING } from '../../internal/motion/animation.js';\nconst PRESS_GROW_MS = 450;\nconst MINIMUM_PRESS_MS = 225;\nconst INITIAL_ORIGIN_SCALE = 0.2;\nconst PADDING = 10;\nconst SOFT_EDGE_MINIMUM_SIZE = 75;\nconst SOFT_EDGE_CONTAINER_RATIO = 0.35;\nconst PRESS_PSEUDO = '::after';\nconst ANIMATION_FILL = 'forwards';\n/**\n * Interaction states for the ripple.\n *\n * On Touch:\n * - `INACTIVE -> TOUCH_DELAY -> WAITING_FOR_CLICK -> INACTIVE`\n * - `INACTIVE -> TOUCH_DELAY -> HOLDING -> WAITING_FOR_CLICK -> INACTIVE`\n *\n * On Mouse or Pen:\n * - `INACTIVE -> WAITING_FOR_CLICK -> INACTIVE`\n */\nvar State;\n(function (State) {\n /**\n * Initial state of the control, no touch in progress.\n *\n * Transitions:\n * - on touch down: transition to `TOUCH_DELAY`.\n * - on mouse down: transition to `WAITING_FOR_CLICK`.\n */\n State[State[\"INACTIVE\"] = 0] = \"INACTIVE\";\n /**\n * Touch down has been received, waiting to determine if it's a swipe or\n * scroll.\n *\n * Transitions:\n * - on touch up: begin press; transition to `WAITING_FOR_CLICK`.\n * - on cancel: transition to `INACTIVE`.\n * - after `TOUCH_DELAY_MS`: begin press; transition to `HOLDING`.\n */\n State[State[\"TOUCH_DELAY\"] = 1] = \"TOUCH_DELAY\";\n /**\n * A touch has been deemed to be a press\n *\n * Transitions:\n * - on up: transition to `WAITING_FOR_CLICK`.\n */\n State[State[\"HOLDING\"] = 2] = \"HOLDING\";\n /**\n * The user touch has finished, transition into rest state.\n *\n * Transitions:\n * - on click end press; transition to `INACTIVE`.\n */\n State[State[\"WAITING_FOR_CLICK\"] = 3] = \"WAITING_FOR_CLICK\";\n})(State || (State = {}));\n/**\n * Events that the ripple listens to.\n */\nconst EVENTS = [\n 'click',\n 'contextmenu',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerup',\n];\n/**\n * Delay reacting to touch so that we do not show the ripple for a swipe or\n * scroll interaction.\n */\nconst TOUCH_DELAY_MS = 150;\n/**\n * Used to detect if HCM is active. Events do not process during HCM when the\n * ripple is not displayed.\n */\nconst FORCED_COLORS = isServer\n ? null\n : window.matchMedia('(forced-colors: active)');\n/**\n * A ripple component.\n */\nexport class Ripple extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Disables the ripple.\n */\n this.disabled = false;\n this.hovered = false;\n this.pressed = false;\n this.rippleSize = '';\n this.rippleScale = '';\n this.initialSize = 0;\n this.state = State.INACTIVE;\n this.checkBoundsAfterContextMenu = false;\n this.attachableController = new AttachableController(this, this.onControlChange.bind(this));\n }\n get htmlFor() {\n return this.attachableController.htmlFor;\n }\n set htmlFor(htmlFor) {\n this.attachableController.htmlFor = htmlFor;\n }\n get control() {\n return this.attachableController.control;\n }\n set control(control) {\n this.attachableController.control = control;\n }\n attach(control) {\n this.attachableController.attach(control);\n }\n detach() {\n this.attachableController.detach();\n }\n connectedCallback() {\n super.connectedCallback();\n // Needed for VoiceOver, which will create a \"group\" if the element is a\n // sibling to other content.\n this.setAttribute('aria-hidden', 'true');\n }\n render() {\n const classes = {\n 'hovered': this.hovered,\n 'pressed': this.pressed,\n };\n return html `<div class=\"surface ${classMap(classes)}\"></div>`;\n }\n update(changedProps) {\n if (changedProps.has('disabled') && this.disabled) {\n this.hovered = false;\n this.pressed = false;\n }\n super.update(changedProps);\n }\n /**\n * TODO(b/269799771): make private\n * @private only public for slider\n */\n handlePointerenter(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n this.hovered = true;\n }\n /**\n * TODO(b/269799771): make private\n * @private only public for slider\n */\n handlePointerleave(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n this.hovered = false;\n // release a held mouse or pen press that moves outside the element\n if (this.state !== State.INACTIVE) {\n this.endPressAnimation();\n }\n }\n handlePointerup(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n if (this.state === State.HOLDING) {\n this.state = State.WAITING_FOR_CLICK;\n return;\n }\n if (this.state === State.TOUCH_DELAY) {\n this.state = State.WAITING_FOR_CLICK;\n this.startPressAnimation(this.rippleStartEvent);\n return;\n }\n }\n async handlePointerdown(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n this.rippleStartEvent = event;\n if (!this.isTouch(event)) {\n this.state = State.WAITING_FOR_CLICK;\n this.startPressAnimation(event);\n return;\n }\n // after a longpress contextmenu event, an extra `pointerdown` can be\n // dispatched to the pressed element. Check that the down is within\n // bounds of the element in this case.\n if (this.checkBoundsAfterContextMenu && !this.inBounds(event)) {\n return;\n }\n this.checkBoundsAfterContextMenu = false;\n // Wait for a hold after touch delay\n this.state = State.TOUCH_DELAY;\n await new Promise((resolve) => {\n setTimeout(resolve, TOUCH_DELAY_MS);\n });\n if (this.state !== State.TOUCH_DELAY) {\n return;\n }\n this.state = State.HOLDING;\n this.startPressAnimation(event);\n }\n handleClick() {\n // Click is a MouseEvent in Firefox and Safari, so we cannot use\n // `shouldReactToEvent`\n if (this.disabled) {\n return;\n }\n if (this.state === State.WAITING_FOR_CLICK) {\n this.endPressAnimation();\n return;\n }\n if (this.state === State.INACTIVE) {\n // keyboard synthesized click event\n this.startPressAnimation();\n this.endPressAnimation();\n }\n }\n handlePointercancel(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n this.endPressAnimation();\n }\n handleContextmenu() {\n if (this.disabled) {\n return;\n }\n this.checkBoundsAfterContextMenu = true;\n this.endPressAnimation();\n }\n determineRippleSize() {\n const { height, width } = this.getBoundingClientRect();\n const maxDim = Math.max(height, width);\n const softEdgeSize = Math.max(SOFT_EDGE_CONTAINER_RATIO * maxDim, SOFT_EDGE_MINIMUM_SIZE);\n const initialSize = Math.floor(maxDim * INITIAL_ORIGIN_SCALE);\n const hypotenuse = Math.sqrt(width ** 2 + height ** 2);\n const maxRadius = hypotenuse + PADDING;\n this.initialSize = initialSize;\n this.rippleScale = `${(maxRadius + softEdgeSize) / initialSize}`;\n this.rippleSize = `${initialSize}px`;\n }\n getNormalizedPointerEventCoords(pointerEvent) {\n const { scrollX, scrollY } = window;\n const { left, top } = this.getBoundingClientRect();\n const documentX = scrollX + left;\n const documentY = scrollY + top;\n const { pageX, pageY } = pointerEvent;\n return { x: pageX - documentX, y: pageY - documentY };\n }\n getTranslationCoordinates(positionEvent) {\n const { height, width } = this.getBoundingClientRect();\n // end in the center\n const endPoint = {\n x: (width - this.initialSize) / 2,\n y: (height - this.initialSize) / 2,\n };\n let startPoint;\n if (positionEvent instanceof PointerEvent) {\n startPoint = this.getNormalizedPointerEventCoords(positionEvent);\n }\n else {\n startPoint = {\n x: width / 2,\n y: height / 2,\n };\n }\n // center around start point\n startPoint = {\n x: startPoint.x - this.initialSize / 2,\n y: startPoint.y - this.initialSize / 2,\n };\n return { startPoint, endPoint };\n }\n startPressAnimation(positionEvent) {\n if (!this.mdRoot) {\n return;\n }\n this.pressed = true;\n this.growAnimation?.cancel();\n this.determineRippleSize();\n const { startPoint, endPoint } = this.getTranslationCoordinates(positionEvent);\n const translateStart = `${startPoint.x}px, ${startPoint.y}px`;\n const translateEnd = `${endPoint.x}px, ${endPoint.y}px`;\n this.growAnimation = this.mdRoot.animate({\n top: [0, 0],\n left: [0, 0],\n height: [this.rippleSize, this.rippleSize],\n width: [this.rippleSize, this.rippleSize],\n transform: [\n `translate(${translateStart}) scale(1)`,\n `translate(${translateEnd}) scale(${this.rippleScale})`,\n ],\n }, {\n pseudoElement: PRESS_PSEUDO,\n duration: PRESS_GROW_MS,\n easing: EASING.STANDARD,\n fill: ANIMATION_FILL,\n });\n }\n async endPressAnimation() {\n this.rippleStartEvent = undefined;\n this.state = State.INACTIVE;\n const animation = this.growAnimation;\n let pressAnimationPlayState = Infinity;\n if (typeof animation?.currentTime === 'number') {\n pressAnimationPlayState = animation.currentTime;\n }\n else if (animation?.currentTime) {\n pressAnimationPlayState = animation.currentTime.to('ms').value;\n }\n if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {\n this.pressed = false;\n return;\n }\n await new Promise((resolve) => {\n setTimeout(resolve, MINIMUM_PRESS_MS - pressAnimationPlayState);\n });\n if (this.growAnimation !== animation) {\n // A new press animation was started. The old animation was canceled and\n // should not finish the pressed state.\n return;\n }\n this.pressed = false;\n }\n /**\n * Returns `true` if\n * - the ripple element is enabled\n * - the pointer is primary for the input type\n * - the pointer is the pointer that started the interaction, or will start\n * the interaction\n * - the pointer is a touch, or the pointer state has the primary button\n * held, or the pointer is hovering\n */\n shouldReactToEvent(event) {\n if (this.disabled || !event.isPrimary) {\n return false;\n }\n if (this.rippleStartEvent &&\n this.rippleStartEvent.pointerId !== event.pointerId) {\n return false;\n }\n if (event.type === 'pointerenter' || event.type === 'pointerleave') {\n return !this.isTouch(event);\n }\n const isPrimaryButton = event.buttons === 1;\n return this.isTouch(event) || isPrimaryButton;\n }\n /**\n * Check if the event is within the bounds of the element.\n *\n * This is only needed for the \"stuck\" contextmenu longpress on Chrome.\n */\n inBounds({ x, y }) {\n const { top, left, bottom, right } = this.getBoundingClientRect();\n return x >= left && x <= right && y >= top && y <= bottom;\n }\n isTouch({ pointerType }) {\n return pointerType === 'touch';\n }\n /** @private */\n async handleEvent(event) {\n if (FORCED_COLORS?.matches) {\n // Skip event logic since the ripple is `display: none`.\n return;\n }\n switch (event.type) {\n case 'click':\n this.handleClick();\n break;\n case 'contextmenu':\n this.handleContextmenu();\n break;\n case 'pointercancel':\n this.handlePointercancel(event);\n break;\n case 'pointerdown':\n await this.handlePointerdown(event);\n break;\n case 'pointerenter':\n this.handlePointerenter(event);\n break;\n case 'pointerleave':\n this.handlePointerleave(event);\n break;\n case 'pointerup':\n this.handlePointerup(event);\n break;\n default:\n break;\n }\n }\n onControlChange(prev, next) {\n if (isServer)\n return;\n for (const event of EVENTS) {\n prev?.removeEventListener(event, this);\n next?.addEventListener(event, this);\n }\n }\n}\n__decorate([\n property({ type: Boolean, reflect: true })\n], Ripple.prototype, \"disabled\", void 0);\n__decorate([\n state()\n], Ripple.prototype, \"hovered\", void 0);\n__decorate([\n state()\n], Ripple.prototype, \"pressed\", void 0);\n__decorate([\n query('.surface')\n], Ripple.prototype, \"mdRoot\", void 0);\n//# sourceMappingURL=ripple.js.map","/**\n * @license\n * Copyright 2024 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n// Generated stylesheet for ./ripple/internal/ripple-styles.css.\nimport { css } from 'lit';\nexport const styles = css `:host{display:flex;margin:auto;pointer-events:none}:host([disabled]){display:none}@media(forced-colors: active){:host{display:none}}:host,.surface{border-radius:inherit;position:absolute;inset:0;overflow:hidden}.surface{-webkit-tap-highlight-color:rgba(0,0,0,0)}.surface::before,.surface::after{content:\"\";opacity:0;position:absolute}.surface::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));inset:0;transition:opacity 15ms linear,background-color 15ms linear}.surface::after{background:radial-gradient(closest-side, var(--md-ripple-pressed-color, var(--md-sys-color-on-surface, #1d1b20)) max(100% - 70px, 65%), transparent 100%);transform-origin:center center;transition:opacity 375ms linear}.hovered::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-ripple-hover-opacity, 0.08)}.pressed::after{opacity:var(--md-ripple-pressed-opacity, 0.12);transition-duration:105ms}\n`;\n//# sourceMappingURL=ripple-styles.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { Ripple } from './internal/ripple.js';\nimport { styles } from './internal/ripple-styles.js';\n/**\n * @summary Ripples, also known as state layers, are visual indicators used to\n * communicate the status of a component or interactive element.\n *\n * @description A state layer is a semi-transparent covering on an element that\n * indicates its state. State layers provide a systematic approach to\n * visualizing states by using opacity. A layer can be applied to an entire\n * element or in a circular shape and only one state layer can be applied at a\n * given time.\n *\n * @final\n * @suppress {visibility}\n */\nlet MdRipple = class MdRipple extends Ripple {\n};\nMdRipple.styles = [styles];\nMdRipple = __decorate([\n customElement('md-ripple')\n], MdRipple);\nexport { MdRipple };\n//# sourceMappingURL=ripple.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * Dispatches a click event to the given element that triggers a native action,\n * but is not composed and therefore is not seen outside the element.\n *\n * This is useful for responding to an external click event on the host element\n * that should trigger an internal action like a button click.\n *\n * Note, a helper is provided because setting this up correctly is a bit tricky.\n * In particular, calling `click` on an element creates a composed event, which\n * is not desirable, and a manually dispatched event must specifically be a\n * `MouseEvent` to trigger a native action.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function dispatchActivationClick(element) {\n const event = new MouseEvent('click', { bubbles: true });\n element.dispatchEvent(event);\n return event;\n}\n/**\n * Returns true if the click event should trigger an activation behavior. The\n * behavior is defined by the element and is whatever it should do when\n * clicked.\n *\n * Typically when an element needs to handle a click, the click is generated\n * from within the element and an event listener within the element implements\n * the needed behavior; however, it's possible to fire a click directly\n * at the element that the element should handle. This method helps\n * distinguish these \"external\" clicks.\n *\n * An \"external\" click can be triggered in a number of ways: via a click\n * on an associated label for a form associated element, calling\n * `element.click()`, or calling\n * `element.dispatchEvent(new MouseEvent('click', ...))`.\n *\n * Also works around Firefox issue\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1804576 by squelching\n * events for a microtask after called.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function isActivationClick(event) {\n // Event must start at the event target.\n if (event.currentTarget !== event.target) {\n return false;\n }\n // Event must not be retargeted from shadowRoot.\n if (event.composedPath()[0] !== event.target) {\n return false;\n }\n // Target must not be disabled; this should only occur for a synthetically\n // dispatched click.\n if (event.target.disabled) {\n return false;\n }\n // This is an activation if the event should not be squelched.\n return !squelchEvent(event);\n}\n// TODO(https://bugzilla.mozilla.org/show_bug.cgi?id=1804576)\n// Remove when Firefox bug is addressed.\nfunction squelchEvent(event) {\n const squelched = isSquelchingEvents;\n if (squelched) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n squelchEventsForMicrotask();\n return squelched;\n}\n// Ignore events for one microtask only.\nlet isSquelchingEvents = false;\nasync function squelchEventsForMicrotask() {\n isSquelchingEvents = true;\n // Need to pause for just one microtask.\n // tslint:disable-next-line\n await null;\n isSquelchingEvents = false;\n}\n//# sourceMappingURL=form-label-activation.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * A unique symbol used for protected access to an instance's\n * `ElementInternals`.\n *\n * @example\n * ```ts\n * class MyElement extends mixinElementInternals(LitElement) {\n * constructor() {\n * super();\n * this[internals].role = 'button';\n * }\n * }\n * ```\n */\nexport const internals = Symbol('internals');\n// Private symbols\nconst privateInternals = Symbol('privateInternals');\n/**\n * Mixes in an attached `ElementInternals` instance.\n *\n * This mixin is only needed when other shared code needs access to a\n * component's `ElementInternals`, such as form-associated mixins.\n *\n * @param base The class to mix functionality into.\n * @return The provided class with `WithElementInternals` mixed in.\n */\nexport function mixinElementInternals(base) {\n class WithElementInternalsElement extends base {\n get [internals]() {\n // Create internals in getter so that it can be used in methods called on\n // construction in `ReactiveElement`, such as `requestUpdate()`.\n if (!this[privateInternals]) {\n // Cast needed for closure\n this[privateInternals] = this.attachInternals();\n }\n return this[privateInternals];\n }\n }\n return WithElementInternalsElement;\n}\n//# sourceMappingURL=element-internals.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { isServer } from 'lit';\nimport { internals } from './element-internals.js';\n/**\n * A symbol property used to create a constraint validation `Validator`.\n * Required for all `mixinConstraintValidation()` elements.\n */\nexport const createValidator = Symbol('createValidator');\n/**\n * A symbol property used to return an anchor for constraint validation popups.\n * Required for all `mixinConstraintValidation()` elements.\n */\nexport const getValidityAnchor = Symbol('getValidityAnchor');\n// Private symbol members, used to avoid name clashing.\nconst privateValidator = Symbol('privateValidator');\nconst privateSyncValidity = Symbol('privateSyncValidity');\nconst privateCustomValidationMessage = Symbol('privateCustomValidationMessage');\n/**\n * Mixes in constraint validation APIs for an element.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/Constraint_validation\n * for more details.\n *\n * Implementations must provide a validator to cache and compute its validity,\n * along with a shadow root element to anchor validation popups to.\n *\n * @example\n * ```ts\n * const baseClass = mixinConstraintValidation(\n * mixinFormAssociated(mixinElementInternals(LitElement))\n * );\n *\n * class MyCheckbox extends baseClass {\n * \\@property({type: Boolean}) checked = false;\n * \\@property({type: Boolean}) required = false;\n *\n * [createValidator]() {\n * return new CheckboxValidator(() => this);\n * }\n *\n * [getValidityAnchor]() {\n * return this.renderRoot.querySelector('.root');\n * }\n * }\n * ```\n *\n * @param base The class to mix functionality into.\n * @return The provided class with `ConstraintValidation` mixed in.\n */\nexport function mixinConstraintValidation(base) {\n var _a;\n class ConstraintValidationElement extends base {\n constructor() {\n super(...arguments);\n /**\n * Needed for Safari, see https://bugs.webkit.org/show_bug.cgi?id=261432\n * Replace with this[internals].validity.customError when resolved.\n */\n this[_a] = '';\n }\n get validity() {\n this[privateSyncValidity]();\n return this[internals].validity;\n }\n get validationMessage() {\n this[privateSyncValidity]();\n return this[internals].validationMessage;\n }\n get willValidate() {\n this[privateSyncValidity]();\n return this[internals].willValidate;\n }\n checkValidity() {\n this[privateSyncValidity]();\n return this[internals].checkValidity();\n }\n reportValidity() {\n this[privateSyncValidity]();\n return this[internals].reportValidity();\n }\n setCustomValidity(error) {\n this[privateCustomValidationMessage] = error;\n this[privateSyncValidity]();\n }\n requestUpdate(name, oldValue, options) {\n super.requestUpdate(name, oldValue, options);\n this[privateSyncValidity]();\n }\n firstUpdated(changed) {\n super.firstUpdated(changed);\n // Sync the validity again when the element first renders, since the\n // validity anchor is now available.\n //\n // Elements that `delegatesFocus: true` to an `<input>` will throw an\n // error in Chrome and Safari when a form tries to submit or call\n // `form.reportValidity()`:\n // \"An invalid form control with name='' is not focusable\"\n //\n // The validity anchor MUST be provided in `internals.setValidity()` and\n // MUST be the `<input>` element rendered.\n //\n // See https://lit.dev/playground/#gist=6c26e418e0010f7a5aac15005cde8bde\n // for a reproduction.\n this[privateSyncValidity]();\n }\n [(_a = privateCustomValidationMessage, privateSyncValidity)]() {\n if (isServer) {\n return;\n }\n if (!this[privateValidator]) {\n this[privateValidator] = this[createValidator]();\n }\n const { validity, validationMessage: nonCustomValidationMessage } = this[privateValidator].getValidity();\n const customError = !!this[privateCustomValidationMessage];\n const validationMessage = this[privateCustomValidationMessage] || nonCustomValidationMessage;\n this[internals].setValidity({ ...validity, customError }, validationMessage, this[getValidityAnchor]() ?? undefined);\n }\n [createValidator]() {\n throw new Error('Implement [createValidator]');\n }\n [getValidityAnchor]() {\n throw new Error('Implement [getValidityAnchor]');\n }\n }\n return ConstraintValidationElement;\n}\n//# sourceMappingURL=constraint-validation.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\n/**\n * A property symbol that indicates whether or not a `Focusable` element can be\n * focused.\n */\nexport const isFocusable = Symbol('isFocusable');\nconst privateIsFocusable = Symbol('privateIsFocusable');\nconst externalTabIndex = Symbol('externalTabIndex');\nconst isUpdatingTabIndex = Symbol('isUpdatingTabIndex');\nconst updateTabIndex = Symbol('updateTabIndex');\n/**\n * Mixes in focusable functionality for a class.\n *\n * Elements can enable and disable their focusability with the `isFocusable`\n * symbol property. Changing `tabIndex` will trigger a lit render, meaning\n * `this.tabIndex` can be used in template expressions.\n *\n * This mixin will preserve externally-set tabindices. If an element turns off\n * focusability, but a user sets `tabindex=\"0\"`, it will still be focusable.\n *\n * To remove user overrides and restore focusability control to the element,\n * remove the `tabindex` attribute.\n *\n * @param base The class to mix functionality into.\n * @return The provided class with `Focusable` mixed in.\n */\nexport function mixinFocusable(base) {\n var _a, _b, _c;\n class FocusableElement extends base {\n constructor() {\n super(...arguments);\n this[_a] = true;\n this[_b] = null;\n this[_c] = false;\n }\n get [isFocusable]() {\n return this[privateIsFocusable];\n }\n set [isFocusable](value) {\n if (this[isFocusable] === value) {\n return;\n }\n this[privateIsFocusable] = value;\n this[updateTabIndex]();\n }\n connectedCallback() {\n super.connectedCallback();\n this[updateTabIndex]();\n }\n attributeChangedCallback(name, old, value) {\n if (name !== 'tabindex') {\n super.attributeChangedCallback(name, old, value);\n return;\n }\n this.requestUpdate('tabIndex', Number(old ?? -1));\n if (this[isUpdatingTabIndex]) {\n // Not an externally-initiated update.\n return;\n }\n if (!this.hasAttribute('tabindex')) {\n // User removed the attribute, can now use internal tabIndex\n this[externalTabIndex] = null;\n this[updateTabIndex]();\n return;\n }\n this[externalTabIndex] = this.tabIndex;\n }\n [(_a = privateIsFocusable, _b = externalTabIndex, _c = isUpdatingTabIndex, updateTabIndex)]() {\n const internalTabIndex = this[isFocusable] ? 0 : -1;\n const computedTabIndex = this[externalTabIndex] ?? internalTabIndex;\n this[isUpdatingTabIndex] = true;\n this.tabIndex = computedTabIndex;\n this[isUpdatingTabIndex] = false;\n }\n }\n __decorate([\n property({ noAccessor: true })\n ], FocusableElement.prototype, \"tabIndex\", void 0);\n return FocusableElement;\n}\n//# sourceMappingURL=focusable.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { internals } from './element-internals.js';\n/**\n * A symbol property to retrieve the form value for an element.\n */\nexport const getFormValue = Symbol('getFormValue');\n/**\n * A symbol property to retrieve the form state for an element.\n */\nexport const getFormState = Symbol('getFormState');\n/**\n * Mixes in form-associated behavior for a class. This allows an element to add\n * values to `<form>` elements.\n *\n * Implementing classes should provide a `[formValue]` to return the current\n * value of the element, as well as reset and restore callbacks.\n *\n * @example\n * ```ts\n * const base = mixinFormAssociated(mixinElementInternals(LitElement));\n *\n * class MyControl extends base {\n * \\@property()\n * value = '';\n *\n * override [getFormValue]() {\n * return this.value;\n * }\n *\n * override formResetCallback() {\n * const defaultValue = this.getAttribute('value');\n * this.value = defaultValue;\n * }\n *\n * override formStateRestoreCallback(state: string) {\n * this.value = state;\n * }\n * }\n * ```\n *\n * Elements may optionally provide a `[formState]` if their values do not\n * represent the state of the component.\n *\n * @example\n * ```ts\n * const base = mixinFormAssociated(mixinElementInternals(LitElement));\n *\n * class MyCheckbox extends base {\n * \\@property()\n * value = 'on';\n *\n * \\@property({type: Boolean})\n * checked = false;\n *\n * override [getFormValue]() {\n * return this.checked ? this.value : null;\n * }\n *\n * override [getFormState]() {\n * return String(this.checked);\n * }\n *\n * override formResetCallback() {\n * const defaultValue = this.hasAttribute('checked');\n * this.checked = defaultValue;\n * }\n *\n * override formStateRestoreCallback(state: string) {\n * this.checked = Boolean(state);\n * }\n * }\n * ```\n *\n * IMPORTANT: Requires declares for lit-analyzer\n * @example\n * ```ts\n * const base = mixinFormAssociated(mixinElementInternals(LitElement));\n * class MyControl extends base {\n * // Writable mixin properties for lit-html binding, needed for lit-analyzer\n * declare disabled: boolean;\n * declare name: string;\n * }\n * ```\n *\n * @param base The class to mix functionality into. The base class must use\n * `mixinElementInternals()`.\n * @return The provided class with `FormAssociated` mixed in.\n */\nexport function mixinFormAssociated(base) {\n class FormAssociatedElement extends base {\n get form() {\n return this[internals].form;\n }\n get labels() {\n return this[internals].labels;\n }\n // Use @property for the `name` and `disabled` properties to add them to the\n // `observedAttributes` array and trigger `attributeChangedCallback()`.\n //\n // We don't use Lit's default getter/setter (`noAccessor: true`) because\n // the attributes need to be updated synchronously to work with synchronous\n // form APIs, and Lit updates attributes async by default.\n get name() {\n return this.getAttribute('name') ?? '';\n }\n set name(name) {\n // Note: setting name to null or empty does not remove the attribute.\n this.setAttribute('name', name);\n // We don't need to call `requestUpdate()` since it's called synchronously\n // in `attributeChangedCallback()`.\n }\n get disabled() {\n return this.hasAttribute('disabled');\n }\n set disabled(disabled) {\n this.toggleAttribute('disabled', disabled);\n // We don't need to call `requestUpdate()` since it's called synchronously\n // in `attributeChangedCallback()`.\n }\n attributeChangedCallback(name, old, value) {\n // Manually `requestUpdate()` for `name` and `disabled` when their\n // attribute or property changes.\n // The properties update their attributes, so this callback is invoked\n // immediately when the properties are set. We call `requestUpdate()` here\n // instead of letting Lit set the properties from the attribute change.\n // That would cause the properties to re-set the attribute and invoke this\n // callback again in a loop. This leads to stale state when Lit tries to\n // determine if a property changed or not.\n if (name === 'name' || name === 'disabled') {\n // Disabled's value is only false if the attribute is missing and null.\n const oldValue = name === 'disabled' ? old !== null : old;\n // Trigger a lit update when the attribute changes.\n this.requestUpdate(name, oldValue);\n return;\n }\n super.attributeChangedCallback(name, old, value);\n }\n requestUpdate(name, oldValue, options) {\n super.requestUpdate(name, oldValue, options);\n // If any properties change, update the form value, which may have changed\n // as well.\n // Update the form value synchronously in `requestUpdate()` rather than\n // `update()` or `updated()`, which are async. This is necessary to ensure\n // that form data is updated in time for synchronous event listeners.\n this[internals].setFormValue(this[getFormValue](), this[getFormState]());\n }\n [getFormValue]() {\n // Closure does not allow abstract symbol members, so a default\n // implementation is needed.\n throw new Error('Implement [getFormValue]');\n }\n [getFormState]() {\n return this[getFormValue]();\n }\n formDisabledCallback(disabled) {\n this.disabled = disabled;\n }\n }\n /** @nocollapse */\n FormAssociatedElement.formAssociated = true;\n __decorate([\n property({ noAccessor: true })\n ], FormAssociatedElement.prototype, \"name\", null);\n __decorate([\n property({ type: Boolean, noAccessor: true })\n ], FormAssociatedElement.prototype, \"disabled\", null);\n return FormAssociatedElement;\n}\n//# sourceMappingURL=form-associated.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * A class that computes and caches `ValidityStateFlags` for a component with\n * a given `State` interface.\n *\n * Cached performance before computing validity is important since constraint\n * validation must be checked frequently and synchronously when properties\n * change.\n *\n * @template State The expected interface of properties relevant to constraint\n * validation.\n */\nexport class Validator {\n /**\n * Creates a new validator.\n *\n * @param getCurrentState A callback that returns the current state of\n * constraint validation-related properties.\n */\n constructor(getCurrentState) {\n this.getCurrentState = getCurrentState;\n /**\n * The current validity state and message. This is cached and returns if\n * constraint validation state does not change.\n */\n this.currentValidity = {\n validity: {},\n validationMessage: '',\n };\n }\n /**\n * Returns the current `ValidityStateFlags` and validation message for the\n * validator.\n *\n * If the constraint validation state has not changed, this will return a\n * cached result. This is important since `getValidity()` can be called\n * frequently in response to synchronous property changes.\n *\n * @return The current validity and validation message.\n */\n getValidity() {\n const state = this.getCurrentState();\n const hasStateChanged = !this.prevState || !this.equals(this.prevState, state);\n if (!hasStateChanged) {\n return this.currentValidity;\n }\n const { validity, validationMessage } = this.computeValidity(state);\n this.prevState = this.copy(state);\n this.currentValidity = {\n validationMessage,\n validity: {\n // Change any `ValidityState` instances into `ValidityStateFlags` since\n // `ValidityState` cannot be easily `{...spread}`.\n badInput: validity.badInput,\n customError: validity.customError,\n patternMismatch: validity.patternMismatch,\n rangeOverflow: validity.rangeOverflow,\n rangeUnderflow: validity.rangeUnderflow,\n stepMismatch: validity.stepMismatch,\n tooLong: validity.tooLong,\n tooShort: validity.tooShort,\n typeMismatch: validity.typeMismatch,\n valueMissing: validity.valueMissing,\n },\n };\n return this.currentValidity;\n }\n}\n//# sourceMappingURL=validator.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { Validator } from './validator.js';\n/**\n * A validator that provides constraint validation that emulates\n * `<input type=\"radio\">` validation.\n */\nexport class RadioValidator extends Validator {\n computeValidity(states) {\n if (!this.radioElement) {\n // Lazily create the radio element\n this.radioElement = document.createElement('input');\n this.radioElement.type = 'radio';\n // A name is required for validation to run\n this.radioElement.name = 'group';\n }\n let isRequired = false;\n let isChecked = false;\n for (const { checked, required } of states) {\n if (required) {\n isRequired = true;\n }\n if (checked) {\n isChecked = true;\n }\n }\n // Firefox v119 doesn't compute grouped radio validation correctly while\n // they are detached from the DOM, which is why we don't render multiple\n // virtual <input>s. Instead, we can check the required/checked states and\n // grab the i18n'd validation message if the value is missing.\n this.radioElement.checked = isChecked;\n this.radioElement.required = isRequired;\n return {\n validity: {\n valueMissing: isRequired && !isChecked,\n },\n validationMessage: this.radioElement.validationMessage,\n };\n }\n equals(prevGroup, nextGroup) {\n if (prevGroup.length !== nextGroup.length) {\n return false;\n }\n for (let i = 0; i < prevGroup.length; i++) {\n const prev = prevGroup[i];\n const next = nextGroup[i];\n if (prev.checked !== next.checked || prev.required !== next.required) {\n return false;\n }\n }\n return true;\n }\n copy(states) {\n // Cast as unknown since typescript does not have enough information to\n // infer that the array always has at least one element.\n return states.map(({ checked, required }) => ({\n checked,\n required,\n }));\n }\n}\n//# sourceMappingURL=radio-validator.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * A `ReactiveController` that provides root node-scoped single selection for\n * elements, similar to native `<input type=\"radio\">` selection.\n *\n * To use, elements should add the controller and call\n * `selectionController.handleCheckedChange()` in a getter/setter. This must\n * be synchronous to match native behavior.\n *\n * @example\n * const CHECKED = Symbol('checked');\n *\n * class MyToggle extends LitElement {\n * get checked() { return this[CHECKED]; }\n * set checked(checked: boolean) {\n * const oldValue = this.checked;\n * if (oldValue === checked) {\n * return;\n * }\n *\n * this[CHECKED] = checked;\n * this.selectionController.handleCheckedChange();\n * this.requestUpdate('checked', oldValue);\n * }\n *\n * [CHECKED] = false;\n *\n * private selectionController = new SingleSelectionController(this);\n *\n * constructor() {\n * super();\n * this.addController(this.selectionController);\n * }\n * }\n */\nexport class SingleSelectionController {\n /**\n * All single selection elements in the host element's root with the same\n * `name` attribute, including the host element.\n */\n get controls() {\n const name = this.host.getAttribute('name');\n if (!name || !this.root || !this.host.isConnected) {\n return [this.host];\n }\n // Cast as unknown since there is not enough information for typescript to\n // know that there is always at least one element (the host).\n return Array.from(this.root.querySelectorAll(`[name=\"${name}\"]`));\n }\n constructor(host) {\n this.host = host;\n this.focused = false;\n this.root = null;\n this.handleFocusIn = () => {\n this.focused = true;\n this.updateTabIndices();\n };\n this.handleFocusOut = () => {\n this.focused = false;\n this.updateTabIndices();\n };\n /**\n * Handles arrow key events from the host. Using the arrow keys will\n * select and check the next or previous sibling with the host's\n * `name` attribute.\n */\n this.handleKeyDown = (event) => {\n const isDown = event.key === 'ArrowDown';\n const isUp = event.key === 'ArrowUp';\n const isLeft = event.key === 'ArrowLeft';\n const isRight = event.key === 'ArrowRight';\n // Ignore non-arrow keys\n if (!isLeft && !isRight && !isDown && !isUp) {\n return;\n }\n // Don't try to select another sibling if there aren't any.\n const siblings = this.controls;\n if (!siblings.length) {\n return;\n }\n // Prevent default interactions on the element for arrow keys,\n // since this controller will introduce new behavior.\n event.preventDefault();\n // Check if moving forwards or backwards\n const isRtl = getComputedStyle(this.host).direction === 'rtl';\n const forwards = isRtl ? isLeft || isDown : isRight || isDown;\n const hostIndex = siblings.indexOf(this.host);\n let nextIndex = forwards ? hostIndex + 1 : hostIndex - 1;\n // Search for the next sibling that is not disabled to select.\n // If we return to the host index, there is nothing to select.\n while (nextIndex !== hostIndex) {\n if (nextIndex >= siblings.length) {\n // Return to start if moving past the last item.\n nextIndex = 0;\n }\n else if (nextIndex < 0) {\n // Go to end if moving before the first item.\n nextIndex = siblings.length - 1;\n }\n // Check if the next sibling is disabled. If so,\n // move the index and continue searching.\n const nextSibling = siblings[nextIndex];\n if (nextSibling.hasAttribute('disabled')) {\n if (forwards) {\n nextIndex++;\n }\n else {\n nextIndex--;\n }\n continue;\n }\n // Uncheck and remove focusability from other siblings.\n for (const sibling of siblings) {\n if (sibling !== nextSibling) {\n sibling.checked = false;\n sibling.tabIndex = -1;\n sibling.blur();\n }\n }\n // The next sibling should be checked, focused and dispatch a change event\n nextSibling.checked = true;\n nextSibling.tabIndex = 0;\n nextSibling.focus();\n // Fire a change event since the change is triggered by a user action.\n // This matches native <input type=\"radio\"> behavior.\n nextSibling.dispatchEvent(new Event('change', { bubbles: true }));\n break;\n }\n };\n }\n hostConnected() {\n this.root = this.host.getRootNode();\n this.host.addEventListener('keydown', this.handleKeyDown);\n this.host.addEventListener('focusin', this.handleFocusIn);\n this.host.addEventListener('focusout', this.handleFocusOut);\n if (this.host.checked) {\n // Uncheck other siblings when attached if already checked. This mimics\n // native <input type=\"radio\"> behavior.\n this.uncheckSiblings();\n }\n // Update for the newly added host.\n this.updateTabIndices();\n }\n hostDisconnected() {\n this.host.removeEventListener('keydown', this.handleKeyDown);\n this.host.removeEventListener('focusin', this.handleFocusIn);\n this.host.removeEventListener('focusout', this.handleFocusOut);\n // Update for siblings that are still connected.\n this.updateTabIndices();\n this.root = null;\n }\n /**\n * Should be called whenever the host's `checked` property changes\n * synchronously.\n */\n handleCheckedChange() {\n if (!this.host.checked) {\n return;\n }\n this.uncheckSiblings();\n this.updateTabIndices();\n }\n uncheckSiblings() {\n for (const sibling of this.controls) {\n if (sibling !== this.host) {\n sibling.checked = false;\n }\n }\n }\n /**\n * Updates the `tabindex` of the host and its siblings.\n */\n updateTabIndices() {\n // There are three tabindex states for a group of elements:\n // 1. If any are checked, that element is focusable.\n const siblings = this.controls;\n const checkedSibling = siblings.find((sibling) => sibling.checked);\n // 2. If an element is focused, the others are no longer focusable.\n if (checkedSibling || this.focused) {\n const focusable = checkedSibling || this.host;\n focusable.tabIndex = 0;\n for (const sibling of siblings) {\n if (sibling !== focusable) {\n sibling.tabIndex = -1;\n }\n }\n return;\n }\n // 3. If none are checked or focused, all are focusable.\n for (const sibling of siblings) {\n sibling.tabIndex = 0;\n }\n }\n}\n//# sourceMappingURL=single-selection-controller.js.map","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nvar _a;\nimport { __decorate } from \"tslib\";\nimport '../../focus/md-focus-ring.js';\nimport '../../ripple/ripple.js';\nimport { html, isServer, LitElement } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { isActivationClick } from '../../internal/events/form-label-activation.js';\nimport { createValidator, getValidityAnchor, mixinConstraintValidation, } from '../../labs/behaviors/constraint-validation.js';\nimport { internals, mixinElementInternals, } from '../../labs/behaviors/element-internals.js';\nimport { mixinFocusable } from '../../labs/behaviors/focusable.js';\nimport { getFormState, getFormValue, mixinFormAssociated, } from '../../labs/behaviors/form-associated.js';\nimport { RadioValidator } from '../../labs/behaviors/validators/radio-validator.js';\nimport { SingleSelectionController } from './single-selection-controller.js';\nconst CHECKED = Symbol('checked');\nlet maskId = 0;\n// Separate variable needed for closure.\nconst radioBaseClass = mixinConstraintValidation(mixinFormAssociated(mixinElementInternals(mixinFocusable(LitElement))));\n/**\n * A radio component.\n *\n * @fires input {InputEvent} Dispatched when the value changes from user\n * interaction. --bubbles\n * @fires change {Event} Dispatched when the value changes from user\n * interaction. --bubbles --composed\n */\nexport class Radio extends radioBaseClass {\n /**\n * Whether or not the radio is selected.\n */\n get checked() {\n return this[CHECKED];\n }\n set checked(checked) {\n const wasChecked = this.checked;\n if (wasChecked === checked) {\n return;\n }\n this[CHECKED] = checked;\n this.requestUpdate('checked', wasChecked);\n this.selectionController.handleCheckedChange();\n }\n constructor() {\n super();\n // Unique maskId is required because of a Safari bug that fail to persist\n // reference to the mask. This should be removed once the bug is fixed.\n this.maskId = `cutout${++maskId}`;\n this[_a] = false;\n /**\n * Whether or not the radio is required. If any radio is required in a group,\n * all radios are implicitly required.\n */\n this.required = false;\n /**\n * The element value to use in form submission when checked.\n */\n this.value = 'on';\n this.selectionController = new SingleSelectionController(this);\n this.addController(this.selectionController);\n if (!isServer) {\n this[internals].role = 'radio';\n this.addEventListener('click', this.handleClick.bind(this));\n this.addEventListener('keydown', this.handleKeydown.bind(this));\n }\n }\n render() {\n const classes = { 'checked': this.checked };\n return html `\n <div class=\"container ${classMap(classes)}\" aria-hidden=\"true\">\n <md-ripple\n part=\"ripple\"\n .control=${this}\n ?disabled=${this.disabled}></md-ripple>\n <md-focus-ring part=\"focus-ring\" .control=${this}></md-focus-ring>\n <svg class=\"icon\" viewBox=\"0 0 20 20\">\n <mask id=\"${this.maskId}\">\n <rect width=\"100%\" height=\"100%\" fill=\"white\" />\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"black\" />\n </mask>\n <circle\n class=\"outer circle\"\n cx=\"10\"\n cy=\"10\"\n r=\"10\"\n mask=\"url(#${this.maskId})\" />\n <circle class=\"inner circle\" cx=\"10\" cy=\"10\" r=\"5\" />\n </svg>\n\n <div class=\"touch-target\"></div>\n </div>\n `;\n }\n updated() {\n this[internals].ariaChecked = String(this.checked);\n }\n async handleClick(event) {\n if (this.disabled) {\n return;\n }\n // allow event to propagate to user code after a microtask.\n await 0;\n if (event.defaultPrevented) {\n return;\n }\n if (isActivationClick(event)) {\n this.focus();\n }\n // Per spec, clicking on a radio input always selects it.\n this.checked = true;\n this.dispatchEvent(new Event('change', { bubbles: true }));\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n }\n async handleKeydown(event) {\n // allow event to propagate to user code after a microtask.\n await 0;\n if (event.key !== ' ' || event.defaultPrevented) {\n return;\n }\n this.click();\n }\n [(_a = CHECKED, getFormValue)]() {\n return this.checked ? this.value : null;\n }\n [getFormState]() {\n return String(this.checked);\n }\n formResetCallback() {\n // The checked property does not reflect, so the original attribute set by\n // the user is used to determine the default value.\n this.checked = this.hasAttribute('checked');\n }\n formStateRestoreCallback(state) {\n this.checked = state === 'true';\n }\n [createValidator]() {\n return new RadioValidator(() => {\n if (!this.selectionController) {\n // Validation runs on superclass construction, so selection controller\n // might not actually be ready until this class constructs.\n return [this];\n }\n return this.selectionController.controls;\n });\n }\n [getValidityAnchor]() {\n return this.container;\n }\n}\n__decorate([\n property({ type: Boolean })\n], Radio.prototype, \"checked\", null);\n__decorate([\n property({ type: Boolean })\n], Radio.prototype, \"required\", void 0);\n__decorate([\n property()\n], Radio.prototype, \"value\", void 0);\n__decorate([\n query('.container')\n], Radio.prototype, \"container\", void 0);\n//# sourceMappingURL=radio.js.map","/**\n * @license\n * Copyright 2024 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n// Generated stylesheet for ./radio/internal/radio-styles.css.\nimport { css } from 'lit';\nexport const styles = css `@layer{:host{display:inline-flex;height:var(--md-radio-icon-size, 20px);outline:none;position:relative;vertical-align:top;width:var(--md-radio-icon-size, 20px);-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;--md-ripple-hover-color: var(--md-radio-hover-state-layer-color, var(--md-sys-color-on-surface, #1d1b20));--md-ripple-hover-opacity: var(--md-radio-hover-state-layer-opacity, 0.08);--md-ripple-pressed-color: var(--md-radio-pressed-state-layer-color, var(--md-sys-color-primary, #6750a4));--md-ripple-pressed-opacity: var(--md-radio-pressed-state-layer-opacity, 0.12)}:host([disabled]){cursor:default}:host([touch-target=wrapper]){margin:max(0px,(48px - var(--md-radio-icon-size, 20px))/2)}.container{display:flex;height:100%;place-content:center;place-items:center;width:100%}md-focus-ring{height:44px;inset:unset;width:44px}.checked{--md-ripple-hover-color: var(--md-radio-selected-hover-state-layer-color, var(--md-sys-color-primary, #6750a4));--md-ripple-hover-opacity: var(--md-radio-selected-hover-state-layer-opacity, 0.08);--md-ripple-pressed-color: var(--md-radio-selected-pressed-state-layer-color, var(--md-sys-color-on-surface, #1d1b20));--md-ripple-pressed-opacity: var(--md-radio-selected-pressed-state-layer-opacity, 0.12)}.touch-target{height:48px;position:absolute;width:48px}:host([touch-target=none]) .touch-target{display:none}md-ripple{border-radius:50%;height:var(--md-radio-state-layer-size, 40px);inset:unset;width:var(--md-radio-state-layer-size, 40px)}.icon{fill:var(--md-radio-icon-color, var(--md-sys-color-on-surface-variant, #49454f));inset:0;position:absolute}.outer.circle{transition:fill 50ms linear}.inner.circle{opacity:0;transform-origin:center;transition:opacity 50ms linear}.checked .icon{fill:var(--md-radio-selected-icon-color, var(--md-sys-color-primary, #6750a4))}.checked .inner.circle{animation:inner-circle-grow 300ms cubic-bezier(0.05, 0.7, 0.1, 1);opacity:1}@keyframes inner-circle-grow{from{transform:scale(0)}to{transform:scale(1)}}:host([disabled]) .circle{animation-duration:0s;transition-duration:0s}:host(:hover) .icon{fill:var(--md-radio-hover-icon-color, var(--md-sys-color-on-surface, #1d1b20))}:host(:focus-within) .icon{fill:var(--md-radio-focus-icon-color, var(--md-sys-color-on-surface, #1d1b20))}:host(:active) .icon{fill:var(--md-radio-pressed-icon-color, var(--md-sys-color-on-surface, #1d1b20))}:host([disabled]) .icon{fill:var(--md-radio-disabled-unselected-icon-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-radio-disabled-unselected-icon-opacity, 0.38)}:host(:hover) .checked .icon{fill:var(--md-radio-selected-hover-icon-color, var(--md-sys-color-primary, #6750a4))}:host(:focus-within) .checked .icon{fill:var(--md-radio-selected-focus-icon-color, var(--md-sys-color-primary, #6750a4))}:host(:active) .checked .icon{fill:var(--md-radio-selected-pressed-icon-color, var(--md-sys-color-primary, #6750a4))}:host([disabled]) .checked .icon{fill:var(--md-radio-disabled-selected-icon-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-radio-disabled-selected-icon-opacity, 0.38)}}@layer hcm{@media(forced-colors: active){.icon{fill:CanvasText}:host([disabled]) .icon{fill:GrayText;opacity:1}}}\n`;\n//# sourceMappingURL=radio-styles.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { Radio } from './internal/radio.js';\nimport { styles } from './internal/radio-styles.js';\n/**\n * @summary Radio buttons allow users to select one option from a set.\n *\n * @description\n * Radio buttons are the recommended way to allow users to make a single\n * selection from a list of options.\n *\n * Only one radio button can be selected at a time.\n *\n * Use radio buttons to:\n * - Select a single option from a set\n * - Expose all available options\n *\n * @final\n * @suppress {visibility}\n */\nlet MdRadio = class MdRadio extends Radio {\n};\nMdRadio.styles = [styles];\nMdRadio = __decorate([\n customElement('md-radio')\n], MdRadio);\nexport { MdRadio };\n//# sourceMappingURL=radio.js.map","import { html, css, LitElement } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport '@material/web/radio/radio.js';\r\n\r\n@customElement('custom-radio')\r\nexport class CustomRadio extends LitElement {\r\n @property({ type: String }) name = 'radio-group';\r\n @property({ type: Boolean }) checked = false;\r\n @property({ type: Boolean }) disabled = false;\r\n @property({ type: Boolean }) error = false;\r\n\r\n static styles = css`\r\n :host {\r\n font-family: \"Graphik\", sans-serif;\r\n }\r\n\r\n .radio-container {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n cursor: pointer;\r\n }\r\n\r\n md-radio {\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 50%;\r\n background: var(--white);\r\n border: 1px solid var(--secondary-color-20);\r\n }\r\n\r\n md-radio::part(container):hover {\r\n box-shadow: 0px 0px 0px 4px #0F19411A;\r\n border: 1px solid var(--secondary-color-20);\r\n border-radius: 50%;\r\n }\r\n\r\n md-radio:focus-visible::part(container) {\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n md-radio.checked {\r\n background: var(--primary-color);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n md-radio.checked.error {\r\n background: var(--ui-negative);\r\n border: 1px solid var(--ui-negative);\r\n }\r\n\r\n md-radio.error {\r\n border: 1px solid var(--ui-negative);\r\n }\r\n\r\n md-radio.disabled {\r\n cursor: not-allowed;\r\n background: var(--secondary-color-20);\r\n border: 1px solid var(--secondary-color-20);\r\n }\r\n `;\r\n\r\n render() {\r\n const radioClasses = [\r\n this.checked ? 'checked' : '',\r\n this.error ? 'error' : '',\r\n this.disabled ? 'disabled' : '',\r\n ].join(' ');\r\n\r\n return html`\r\n <label class=\"radio-container\">\r\n <md-radio \r\n name=${this.name} \r\n class=${radioClasses}\r\n ?checked=${this.checked} \r\n ?disabled=${this.disabled}\r\n ></md-radio>\r\n <span>${this.checked ? 'On' : 'Off'} ${this.error ? 'Error' : ''}</span>\r\n </label>\r\n `;\r\n }\r\n}","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.3.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import{directive as s}from\"../directive.js\";import{UnsafeHTMLDirective as e}from\"./unsafe-html.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t extends e{}t.directiveName=\"unsafeSVG\",t.resultType=2;const o=s(t);export{o as unsafeSVG};\n//# sourceMappingURL=unsafe-svg.js.map\n","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { bodyL, bodyM, bodyXS } from '../styles/fontStyles';\r\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\r\n\r\ntype SelectOption = string | {\r\n label: string;\r\n value: string | object;\r\n disabled?: boolean;\r\n icon?: string;\r\n};\r\n\r\n@customElement('filterable-select')\r\nexport class FilterableSelect extends LitElement {\r\n @property({ type: Array }) options: SelectOption[] = [];\r\n @property({ type: String }) placeholder = 'Filtrar opciones...';\r\n @property({ type: String, attribute: 'default-value' }) defaultValue = '';\r\n @property({ type: Boolean }) disabled = false;\r\n @property({ type: Object }) value: string | object = '';\r\n @property({ type: String }) label = '';\r\n @property({ type: String }) labelColor = '';\r\n @property({ type: Boolean }) filterable = true;\r\n @property({ type: Number }) maxLength?: number;\r\n @property({ type: Boolean, reflect: true }) error: boolean = false;\r\n\r\n @property({ type: Boolean }) required = false;\r\n @property({ type: Boolean }) optional = false;\r\n\r\n @state() private isMobile: boolean = false;\r\n @state() filteredOptions: SelectOption[] = [];\r\n @state() filterValue = '';\r\n @state() isOpen = false;\r\n @state() mobileFilterValue = '';\r\n @state() private highlightedIndex = -1;\r\n\r\n // Nueva variable de estado para rastrear si el campo fue borrado por el usuario\r\n @state() private _isCleared: boolean = false;\r\n\r\n private debounceTimeout: number | null = null;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: 'Graphik', sans-serif;\r\n width: 100%;\r\n }\r\n\r\n :host([error]) .input-wrapper {\r\n border: 1px solid var(--ui-negative, red) !important;\r\n }\r\n\r\n :host([error]) .input-container:not(.open) .input-wrapper:hover {\r\n box-shadow: 0px 0px 0px 4px #E00F0F1A;\r\n }\r\n\r\n :host([error]) .input-container.open:not(.mobile) .input-wrapper {\r\n border-bottom-left-radius: 0;\r\n border-bottom-right-radius: 0;\r\n border: 1px solid var(--ui-negative, red) !important;\r\n border-bottom: 1px solid transparent !important;\r\n }\r\n\r\n :host([error]) .input-container:not(.mobile) .options-list {\r\n border: 1px solid var(--ui-negative, red) !important;\r\n border-top: none !important;\r\n border-radius: 0 0 4px 4px;\r\n }\r\n\r\n .select-container {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n width: 100%;\r\n }\r\n\r\n .label-container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 8px;\r\n }\r\n\r\n .form-label {\r\n ${bodyM}\r\n display: flex;\r\n align-items: baseline;\r\n flex-direction: row;\r\n gap: 4px;\r\n color: var(--label-color, var(--secondary-color-80));\r\n }\r\n\r\n .input-container {\r\n position: relative;\r\n width: 100%;\r\n }\r\n\r\n .input-container.focused:not(.open):not(.mobile) .input-wrapper {\r\n border: 1px solid var(--primary-color);\r\n border-radius: 4px;\r\n box-shadow: none;\r\n z-index: 11;\r\n }\r\n\r\n .input-container.focused:not(.open):not(.mobile) .input-wrapper:hover {\r\n box-shadow: none;\r\n }\r\n\r\n :host(:not([error])) .input-container.open:not(.mobile) {\r\n border-radius: 4px;\r\n border-bottom-left-radius: 0;\r\n border-bottom-right-radius: 0;\r\n }\r\n\r\n :host(:not([error])) .input-container.open:not(.mobile) .input-wrapper {\r\n border: 1px solid var(--primary-color);\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n border-bottom-left-radius: 0;\r\n border-bottom-right-radius: 0;\r\n border-bottom: 1px solid transparent;\r\n box-shadow: none;\r\n z-index: 11;\r\n }\r\n\r\n :host(:not([error])) .input-wrapper:hover {\r\n box-shadow: 0px 0px 0px 4px #0F19411A;\r\n }\r\n\r\n :host .input-container.open:not(.mobile)::after {\r\n content: '';\r\n position: absolute;\r\n top: calc(100% - 1px);\r\n left: 20px;\r\n right: 20px;\r\n height: 1px;\r\n background-color: var(--gray-20);\r\n z-index: 10;\r\n }\r\n\r\n .input-wrapper {\r\n border: 1px solid var(--secondary-color-10);\r\n border-radius: 4px;\r\n overflow: hidden;\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n transition: box-shadow 0.2s ease-in-out;\r\n background-color: white;\r\n }\r\n\r\n .mobile-modal .filter-input {\r\n border-bottom: 1px solid var(--gray-20);\r\n }\r\n\r\n .filter-input {\r\n ${bodyL};\r\n padding: 16px;\r\n padding-right: 40px;\r\n border: none;\r\n outline: none;\r\n width: 100%;\r\n box-sizing: border-box;\r\n background: white;\r\n cursor: pointer;\r\n color: var(--secondary-color);\r\n flex-grow: 1;\r\n }\r\n\r\n .filter-input,\r\n .filter-fake,\r\n .input-wrapper,\r\n .mobile-modal {\r\n -webkit-tap-highlight-color: transparent !important;\r\n }\r\n\r\n .filter-input::placeholder {\r\n ${bodyL};\r\n color: var(--secondary-color-40);\r\n }\r\n\r\n .icon-button {\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n }\r\n\r\n randstad-icon {\r\n width: 24px;\r\n height: 24px;\r\n color: var(--primary-color);\r\n }\r\n\r\n .options-list {\r\n width: 100%;\r\n position: absolute;\r\n top: 99%;\r\n left: 0;\r\n right: 0;\r\n max-height: 200px;\r\n overflow-y: auto;\r\n border: 1px solid var(--primary-color);\r\n border-top: none;\r\n border-radius: 0 0 4px 4px;\r\n background: white;\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n z-index: 10;\r\n }\r\n\r\n .options-list li {\r\n ${bodyL};\r\n padding: 8px 16px 8px 16px;\r\n cursor: pointer;\r\n color: var(--secondary-color-80);\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .options-list li.highlighted {\r\n background-color: var(--primary-color-10);\r\n }\r\n\r\n .mobile-modal {\r\n position: fixed;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n background-color: white;\r\n z-index: 1000;\r\n border-radius: 12px 12px 0 0;\r\n box-shadow: 0 -4px 10px rgba(0, 0, 0, 0.15);\r\n display: flex;\r\n flex-direction: column;\r\n padding: 0px;\r\n gap: 12px;\r\n animation: slideUp 0.5s ease-out;\r\n max-height: 80vh;\r\n overflow-y: auto;\r\n }\r\n\r\n .mobile-modal .options-list {\r\n position: static;\r\n max-height: none;\r\n border: none;\r\n box-shadow: none;\r\n }\r\n\r\n .mobile-modal .modal-input-container {\r\n position: relative;\r\n }\r\n\r\n .mobile-modal .modal-close-button {\r\n position: absolute;\r\n top: 50%;\r\n right: 12px;\r\n transform: translateY(-50%);\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n padding: 4px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .mobile-modal .modal-close-button randstad-icon {\r\n width: 20px;\r\n height: 20px;\r\n color: var(--secondary-color-60);\r\n }\r\n\r\n .mobile-backdrop {\r\n position: fixed;\r\n inset: 0;\r\n background-color: rgba(0, 0, 0, 0.4);\r\n z-index: 999;\r\n display: flex;\r\n align-items: flex-end;\r\n }\r\n\r\n .filter-fake {\r\n ${bodyL};\r\n padding: 15px;\r\n padding-right: 40px;\r\n width: 100%;\r\n background: white;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n color: var(--secondary-color-80);\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n @keyframes slideUp {\r\n from {\r\n transform: translateY(100%);\r\n }\r\n to {\r\n transform: translateY(0);\r\n }\r\n }\r\n\r\n .options-list::-webkit-scrollbar {\r\n width: 6px;\r\n }\r\n\r\n .options-list::-webkit-scrollbar-track {\r\n background: transparent;\r\n }\r\n\r\n .options-list::-webkit-scrollbar-thumb {\r\n background-color: var(--secondary-color-30);\r\n border-radius: 4px;\r\n }\r\n\r\n .options-list::-webkit-scrollbar-button {\r\n display: none;\r\n }\r\n\r\n .required {\r\n color: var(--ui-negative);\r\n }\r\n\r\n .optional {\r\n color: var(--secondary-color-60);\r\n ${bodyXS}\r\n }\r\n\r\n /* Estilos por defecto del icon para mobile */\r\n .icon-selected {\r\n width: 24px;\r\n height: auto;\r\n margin-left: 4px;\r\n padding-right: 12px; \r\n border-right: 1px solid var(--secondary-color-20);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n }\r\n\r\n .value-text {\r\n margin-left: 8px; /* Aumentamos el margen para separar el texto en mobile */\r\n }\r\n\r\n /*\r\n * Media query para aplicar estilos de escritorio (a partir de 941px)\r\n */\r\n @media (min-width: 941px) {\r\n .icon-selected {\r\n /* Estilos de escritorio para el icono, se anulan los de mobile */\r\n margin-left: 16px;\r\n padding-right: 18px;\r\n }\r\n \r\n .value-text {\r\n /* En escritorio no necesitamos este margen, lo reseteamos */\r\n margin-left: 0;\r\n }\r\n }\r\n\r\n .icon-selected svg,\r\n .icon-list svg {\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n }\r\n\r\n .icon-list {\r\n width: 24px;\r\n height: auto;\r\n margin-right: 8px;\r\n flex-shrink: 0;\r\n }\r\n `;\r\n\r\n update(changedProperties: Map<string, any>) {\r\n if (changedProperties.has('options')) {\r\n this.filteredOptions = [...this.options];\r\n }\r\n \r\n if (changedProperties.has('defaultValue') || changedProperties.has('options') || changedProperties.has('value')) {\r\n // Ignora la lógica de defaultValue si el componente fue limpiado por el usuario\r\n if (this._isCleared) {\r\n super.update(changedProperties);\r\n return;\r\n }\r\n \r\n const targetValue = this.value || this.defaultValue;\r\n\r\n const match = this.options.find(opt =>\r\n typeof opt === 'string' ? opt === targetValue : opt.value === targetValue\r\n );\r\n\r\n if (match) {\r\n this.filterValue = typeof match === 'string' ? match : match.label;\r\n this.value = typeof match === 'string' ? match : match.value;\r\n } else {\r\n this.filterValue = '';\r\n this.value = '';\r\n }\r\n }\r\n\r\n super.update(changedProperties);\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.updateResponsiveMode();\r\n window.addEventListener('resize', this.updateResponsiveModeBound);\r\n document.addEventListener('click', this.handleClickOutside.bind(this));\r\n }\r\n\r\n disconnectedCallback() {\r\n window.removeEventListener('resize', this.updateResponsiveModeBound);\r\n document.removeEventListener('click', this.handleClickOutside.bind(this));\r\n super.disconnectedCallback();\r\n }\r\n\r\n private updateResponsiveModeBound = this.updateResponsiveMode.bind(this);\r\n\r\n private updateResponsiveMode() {\r\n this.isMobile = window.innerWidth <= 940;\r\n }\r\n\r\n handleInputClick(e: Event) {\r\n if (this.isMobile) {\r\n this.mobileFilterValue = '';\r\n }\r\n\r\n if (this.disabled) return;\r\n this.isOpen = !this.isOpen;\r\n this.requestUpdate();\r\n }\r\n\r\n handleInput(e: Event) {\r\n if (!this.filterable) return;\r\n // Un usuario está escribiendo, por lo tanto, no se ha borrado el campo intencionalmente\r\n this._isCleared = false;\r\n \r\n const rawValue = (e.target as HTMLInputElement).value;\r\n const value = this.maxLength ? rawValue.slice(0, this.maxLength).toLowerCase() : rawValue.toLowerCase();\r\n\r\n this.filterValue = value;\r\n this.value = '';\r\n\r\n this.filteredOptions = this.options.filter(option => {\r\n const label = typeof option === 'string' ? option : option.label;\r\n return label.toLowerCase().includes(this.filterValue.toLowerCase());\r\n });\r\n\r\n this.isOpen = true;\r\n\r\n if (this.debounceTimeout) {\r\n clearTimeout(this.debounceTimeout);\r\n }\r\n\r\n this.debounceTimeout = window.setTimeout(() => {\r\n if (this.filterValue.length > 2) {\r\n this.dispatchEvent(new CustomEvent('filter-location', {\r\n detail: { value: this.filterValue },\r\n bubbles: true,\r\n composed: true\r\n }));\r\n }\r\n }, 300);\r\n\r\n this.requestUpdate();\r\n }\r\n\r\n handleMobileInput(e: Event) {\r\n this._isCleared = false;\r\n const rawValue = (e.target as HTMLInputElement).value;\r\n const value = this.maxLength ? rawValue.slice(0, this.maxLength).toLowerCase() : rawValue.toLowerCase();\r\n\r\n this.mobileFilterValue = value;\r\n this.value = '';\r\n\r\n this.filteredOptions = this.options.filter(option => {\r\n const label = typeof option === 'string' ? option : option.label;\r\n return label.toLowerCase().includes(value);\r\n });\r\n\r\n if (this.debounceTimeout) {\r\n clearTimeout(this.debounceTimeout);\r\n }\r\n\r\n this.debounceTimeout = window.setTimeout(() => {\r\n if (value.length > 2) {\r\n this.dispatchEvent(new CustomEvent('filter-location', {\r\n detail: { value },\r\n bubbles: true,\r\n composed: true\r\n }));\r\n }\r\n }, 300);\r\n }\r\n\r\n handleSelect(option: any) {\r\n // Cuando se selecciona una opción, el campo ya no está \"borrado\"\r\n this._isCleared = false; \r\n\r\n this.value = typeof option === 'string' ? option : option.value;\r\n const value = typeof option === 'string' ? option : option.value;\r\n\r\n this.dispatchEvent(new CustomEvent('option-selected', {\r\n detail: { value },\r\n bubbles: true,\r\n composed: true\r\n }));\r\n\r\n this.filterValue = typeof option === 'string' ? option : option.label;\r\n this.isOpen = false;\r\n this.requestUpdate();\r\n }\r\n\r\n handleIconClick() {\r\n if (this.disabled) return;\r\n\r\n if (this.filterable && this.filterValue) {\r\n // El usuario está borrando el campo, activa el flag\r\n this._isCleared = true; \r\n this.filterValue = '';\r\n this.value = '';\r\n this.filteredOptions = [...this.options];\r\n this.dispatchEvent(new CustomEvent('option-selected', {\r\n detail: { value: '' },\r\n bubbles: true,\r\n composed: true\r\n }));\r\n this.isOpen = false;\r\n } else {\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n this.requestUpdate();\r\n }\r\n\r\n handleClickOutside(e: Event) {\r\n const target = e.target;\r\n if (!(target instanceof Node)) return;\r\n\r\n if (!this.contains(target)) {\r\n this.isOpen = false;\r\n this.requestUpdate();\r\n }\r\n }\r\n\r\n handleKeyDown(e: KeyboardEvent) {\r\n const { key } = e;\r\n if (!this.isOpen && (key === 'Enter' || key === ' ')) {\r\n e.preventDefault();\r\n this.isOpen = true;\r\n return;\r\n }\r\n\r\n if (this.isOpen) {\r\n if (key === 'ArrowDown') {\r\n e.preventDefault();\r\n this.highlightedIndex = Math.min(this.highlightedIndex + 1, this.filteredOptions.length - 1);\r\n this.requestUpdate();\r\n } else if (key === 'ArrowUp') {\r\n e.preventDefault();\r\n this.highlightedIndex = Math.max(this.highlightedIndex - 1, 0);\r\n this.requestUpdate();\r\n } else if (key === 'Enter') {\r\n e.preventDefault();\r\n const option = this.filteredOptions[this.highlightedIndex];\r\n if (option) {\r\n this.handleSelect(option);\r\n }\r\n } else if (key === 'Escape') {\r\n e.preventDefault();\r\n this.isOpen = false;\r\n }\r\n }\r\n }\r\n\r\n private renderSelectedIcon() {\r\n const selectedOption = this.options.find(opt =>\r\n typeof opt === 'string' ? opt === this.value : opt.value === this.value\r\n );\r\n\r\n if (selectedOption && typeof selectedOption !== 'string' && selectedOption.icon) {\r\n return html`<span class=\"icon-selected\">${unsafeSVG(selectedOption.icon)}</span>`;\r\n }\r\n return nothing;\r\n }\r\n\r\n render() {\r\n const isMobile = this.isMobile;\r\n\r\n return html`\r\n <div class=\"select-container\" style=\"${this.labelColor ? ` --label-color: ${this.labelColor}` : ''}\">\r\n ${this.label ? html`\r\n <div class=\"label-container\">\r\n <label class=\"form-label\">\r\n ${this.label}\r\n ${this.required\r\n ? html`<span class=\"required\">*</span>`\r\n : this.optional\r\n ? html`<span class=\"optional\">opcional</span>`\r\n : nothing}\r\n </label>\r\n </div>\r\n ` : ''}\r\n\r\n <div class=\"input-container ${this.isOpen ? 'focused' : ''} ${(this.isOpen && this.filteredOptions.length > 0) ? 'open' : ''} ${isMobile ? 'mobile' : ''}\">\r\n\r\n <div class=\"input-wrapper\">\r\n ${isMobile ? html`\r\n <div\r\n class=\"filter-fake\"\r\n @click=\"${this.handleInputClick}\"\r\n @keydown=\"${this.handleKeyDown}\"\r\n tabindex=\"0\"\r\n role=\"combobox\"\r\n aria-expanded=\"${this.isOpen}\"\r\n aria-controls=\"options-list\"\r\n aria-haspopup=\"listbox\"\r\n aria-activedescendant=\"\"\r\n >\r\n ${this.renderSelectedIcon()} \r\n <span class=\"value-text\">${this.filterValue || this.placeholder}</span>\r\n </div>\r\n ` : html`\r\n ${this.renderSelectedIcon()} <input\r\n class=\"filter-input\"\r\n .value=\"${this.filterValue || ''}\"\r\n @click=\"${this.handleInputClick}\"\r\n @keydown=\"${this.handleKeyDown}\"\r\n @input=${this.handleInput}\r\n placeholder=\"${this.filterValue ? '' : this.placeholder}\"\r\n ?disabled=\"${this.disabled}\"\r\n ?readonly=\"${!this.filterable}\"\r\n maxlength=\"${this.maxLength ?? ''}\"\r\n />\r\n `}\r\n <button\r\n class=\"icon-button\"\r\n @click=\"${this.handleIconClick}\"\r\n ?disabled=\"${this.disabled}\"\r\n >\r\n ${this.filterable && this.filterValue\r\n ? html`<randstad-icon name=\"close\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`\r\n : this.isOpen && this.filteredOptions.length > 0\r\n ? html`<randstad-icon name=\"arrow_up\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`\r\n : html`<randstad-icon name=\"arrow_down\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`\r\n }\r\n </button>\r\n </div>\r\n\r\n ${isMobile && this.isOpen ? html`\r\n <div class=\"mobile-backdrop\" @click=\"${() => { this.isOpen = false; }}\">\r\n <div class=\"mobile-modal\" @click=\"${(e: Event) => e.stopPropagation()}\">\r\n <div class=\"modal-input-container\">\r\n <input\r\n class=\"filter-input\"\r\n .value=\"${this.mobileFilterValue || ''}\"\r\n @input=${(e: Event) => this.handleMobileInput(e)}\r\n placeholder=\"${this.placeholder}\" maxlength=\"${this.maxLength ?? ''}\"\r\n autofocus\r\n />\r\n <button class=\"modal-close-button\" @click=\"${() => { this.isOpen = false; }}\">\r\n <randstad-icon name=\"close\" size=\"20px\"></randstad-icon>\r\n </button>\r\n </div>\r\n <ul class=\"options-list\">\r\n ${this.filteredOptions.map((option, index) => {\r\n const label = typeof option === 'string' ? option : option.label;\r\n const isDisabled = typeof option === 'object' && option.disabled;\r\n const icon = typeof option === 'object' ? option.icon : undefined;\r\n\r\n return html`\r\n <li\r\n class=\"${isDisabled ? 'disabled' : ''} ${index === this.highlightedIndex ? 'highlighted' : ''}\"\r\n role=\"option\"\r\n aria-selected=\"${index === this.highlightedIndex}\"\r\n @click=\"${() => {\r\n if (!isDisabled) this.handleSelect(option);\r\n }}\"\r\n >\r\n ${icon ? html`<span class=\"icon-list\">${unsafeSVG(icon)}</span>` : nothing}\r\n ${label}\r\n </li>\r\n `;\r\n })}\r\n </ul>\r\n </div>\r\n </div>\r\n ` : !isMobile && this.isOpen && this.filteredOptions.length > 0 ? html`\r\n <ul class=\"options-list\">\r\n ${this.filteredOptions.map((option, index) => {\r\n const label = typeof option === 'string' ? option : option.label;\r\n const isDisabled = typeof option === 'object' && option.disabled;\r\n const icon = typeof option === 'object' ? option.icon : undefined;\r\n\r\n return html`\r\n <li\r\n class=\"${isDisabled ? 'disabled' : ''} ${index === this.highlightedIndex ? 'highlighted' : ''}\"\r\n role=\"option\"\r\n aria-selected=\"${index === this.highlightedIndex}\"\r\n @click=\"${() => {\r\n if (!isDisabled) this.handleSelect(option);\r\n }}\"\r\n >\r\n ${icon ? html`<span class=\"icon-list\">${unsafeSVG(icon)}</span>` : nothing}\r\n ${label}\r\n </li>\r\n </li>\r\n `;\r\n })}\r\n </ul>\r\n ` : ''}\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}","const globalStyles = new CSSStyleSheet();\r\n\r\nglobalStyles.replaceSync(`\r\n @font-face {\r\n font-family: 'Graphik';\r\n src: url('/src/assets/font/Graphik-Regular.woff2') format('woff2'),\r\n url('/src/assets/font/Graphik-Regular.woff') format('woff'),\r\n url('/src/assets/font/Graphik-Regular.eot') format('embedded-opentype');\r\n font-weight: normal;\r\n font-style: normal;\r\n }\r\n\r\n .body-s {\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 100%;\r\n letter-spacing: 0%;\r\n color: green;\r\n }\r\n`);\r\n\r\nexport default globalStyles;","import { LitElement, html, css } from 'lit';\r\nimport globalStyles from '../styles/globalStyles';\r\nimport { bodyS } from '../styles/fontStyles';\r\n\r\nclass RandstadSnackbar extends LitElement {\r\n type: string = 'informative';\r\n icon: string = 'info';\r\n message: string = 'Este es un mensaje.';\r\n open: boolean = false;\r\n position: string = 'bottom-center';\r\n private isMobile = false;\r\n\r\n static styles = [\r\n globalStyles,\r\n css`\r\n :host {\r\n display: flex;\r\n position: fixed;\r\n align-items: center;\r\n max-width: 100vw;\r\n height: auto;\r\n z-index: 9999;\r\n }\r\n\r\n :host([position=\"top-left\"]) {\r\n top: 16px;\r\n left: 16px;\r\n right: auto;\r\n transform: none;\r\n justify-content: flex-start;\r\n }\r\n\r\n :host([position=\"top-center\"]) {\r\n top: 16px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n justify-content: center;\r\n }\r\n\r\n :host([position=\"top-right\"]) {\r\n top: 16px;\r\n right: 16px;\r\n left: auto;\r\n transform: none;\r\n justify-content: flex-end;\r\n }\r\n\r\n :host([position=\"bottom-left\"]) {\r\n bottom: 16px;\r\n left: 16px;\r\n right: auto;\r\n transform: none;\r\n justify-content: flex-start;\r\n }\r\n\r\n :host([position=\"bottom-center\"]) {\r\n bottom: 16px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n justify-content: center;\r\n }\r\n\r\n :host([position=\"bottom-right\"]) {\r\n bottom: 16px;\r\n right: 16px;\r\n left: auto;\r\n transform: none;\r\n justify-content: flex-end;\r\n }\r\n\r\n :host(.mobile) {\r\n bottom: 16px !important;\r\n top: auto !important;\r\n left: 50% !important;\r\n transform: translateX(-50%) !important;\r\n justify-content: center !important;\r\n width: 100%;\r\n }\r\n\r\n :host(.mobile) .container {\r\n width: 90vw !important;\r\n }\r\n\r\n .container {\r\n ${bodyS};\r\n display: flex;\r\n align-items: center;\r\n box-sizing: border-box;\r\n min-height: 48px;\r\n min-width: 270px;\r\n max-width: 480px;\r\n border-radius: 4px;\r\n padding: 8px;\r\n gap: 8px;\r\n white-space: nowrap;\r\n color: var(--white);\r\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n .message {\r\n display: block;\r\n display: -webkit-box;\r\n -webkit-box-orient: vertical;\r\n -webkit-line-clamp: 2;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: normal;\r\n max-height: calc(2 * 25px);\r\n line-height: 25px;\r\n word-break: break-word;\r\n max-width: 100%;\r\n }\r\n\r\n .container {\r\n color: var(--white);\r\n }\r\n randstad-icon {\r\n color: var(--white);\r\n }\r\n randstad-icon svg {\r\n fill: var(--white);\r\n }\r\n\r\n .icon {\r\n font-size: 18px;\r\n }\r\n .hidden {\r\n display: none;\r\n }\r\n .success {\r\n background-color: var(--ui-positive);\r\n }\r\n .error {\r\n background-color: var(--ui-negative);\r\n }\r\n .warning {\r\n background-color: var(--ui-warning);\r\n }\r\n .informative {\r\n background-color: var(--ui-informative);\r\n }\r\n `\r\n ];\r\n\r\n static get properties() {\r\n return {\r\n type: { type: String },\r\n icon: { type: String },\r\n message: { type: String },\r\n open: { type: Boolean },\r\n position: { type: String, reflect: true },\r\n };\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.updateResponsiveStyles = this.updateResponsiveStyles.bind(this);\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n window.addEventListener('resize', this.updateResponsiveStyles);\r\n this.updateResponsiveStyles();\r\n }\r\n\r\n disconnectedCallback() {\r\n window.removeEventListener('resize', this.updateResponsiveStyles);\r\n super.disconnectedCallback();\r\n }\r\n\r\n updateResponsiveStyles() {\r\n const isMobile = window.innerWidth <= 940;\r\n this.classList.toggle('mobile', isMobile);\r\n }\r\n\r\n render() {\r\n const ariaRole = this.type === 'error' || this.type === 'warning' ? 'alert' : 'status';\r\n return html`\r\n <div\r\n class=\"container ${this.open ? '' : 'hidden'} ${this.type}\"\r\n role=\"${ariaRole}\"\r\n aria-live=\"polite\"\r\n >\r\n <randstad-icon name=${this.icon} size=\"24px\" color=\"white\"></randstad-icon>\r\n <span class=\"message\">${this.message}</span>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ncustomElements.define('randstad-snackbar', RandstadSnackbar);","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\n\r\n@customElement('custom-stepper')\r\nexport class CustomStepper extends LitElement {\r\n @property({ type: Number }) totalSteps = 4;\r\n @property({ type: Number }) currentStep = 0;\r\n\r\n static styles = css`\r\n .stepper {\r\n display: flex;\r\n gap: 20px;\r\n align-items: center;\r\n }\r\n\r\n .step {\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 50%;\r\n background-color: var(--white);\r\n border: 1px solid var(--secondary-color-20);\r\n position: relative;\r\n box-sizing: content-box;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: 12px;\r\n color: var(--secondary-color-20);\r\n }\r\n\r\n .step .inner-circle {\r\n width: 4px;\r\n height: 4px;\r\n border-radius: 50%;\r\n background-color: var(--white);\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n image-rendering: -webkit-optimize-contrast;\r\n image-rendering: crisp-edges;\r\n backface-visibility: hidden;\r\n transform-style: preserve-3d;\r\n }\r\n\r\n .step.completed {\r\n background-color: var(--primary-color);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n .step.completed randstad-icon {\r\n color: white;\r\n }\r\n\r\n .step.active {\r\n background-color: var(--white);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n .step.active .inner-circle {\r\n background-color: var(--primary-color);\r\n }\r\n\r\n .step.active .pulse-circle {\r\n width: 12px;\r\n height: 12px;\r\n border-radius: 50%;\r\n background-color: var(--primary-color);\r\n opacity: 0.25;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%) scale(0.6);\r\n animation: pulse 2000ms ease-in-out infinite;\r\n image-rendering: -webkit-optimize-contrast;\r\n image-rendering: crisp-edges;\r\n backface-visibility: hidden;\r\n }\r\n\r\n @keyframes pulse {\r\n 0% {\r\n transform: translate(-50%, -50%) scale(0.6);\r\n }\r\n 80%, 100% {\r\n transform: translate(-50%, -50%) scale(1.2);\r\n }\r\n }\r\n\r\n .step,\r\n .inner-circle,\r\n .pulse-circle {\r\n will-change: transform;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"stepper\">\r\n ${Array.from({ length: this.totalSteps }, (_, index) => html`\r\n <div\r\n class=\"step ${index < this.currentStep ? 'completed' : index === this.currentStep ? 'active' : ''}\"\r\n >\r\n ${index < this.currentStep\r\n ? html`<randstad-icon name=\"tick-circle\" size=\"16px\"></randstad-icon>`\r\n : index === this.currentStep\r\n ? html`\r\n <span class=\"pulse-circle\"></span>\r\n <span class=\"inner-circle\"></span>\r\n `\r\n : html`<span class=\"inner-circle\"></span>`}\r\n </div>\r\n `)}\r\n </div>\r\n `;\r\n }\r\n}","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { bodyM, titleXXS } from '../styles/fontStyles';\r\n\r\ninterface TabItem {\r\n label: string;\r\n icon: string;\r\n value: string;\r\n}\r\n\r\n@customElement('tabs-bar')\r\nexport class TabsBar extends LitElement {\r\n @property({ type: Array }) tabs: TabItem[] = [];\r\n @property({ type: String }) selected: string = '';\r\n @state() private internalSelected: string = '';\r\n @state() private showPrev = false;\r\n @state() private showNext = false;\r\n\r\n private readonly SCROLL_OFFSET = 56;\r\n\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n border-bottom: 1px solid #E7E8EC;\r\n font-family: \"Graphik\", sans-serif;\r\n }\r\n\r\n .tab-wrapper {\r\n display: flex;\r\n justify-content: flex-start;\r\n }\r\n\r\n .tab {\r\n ${titleXXS};\r\n display: flex;\r\n gap: 8px;\r\n flex-direction: row;\r\n padding: 24px;\r\n align-items: center;\r\n text-align: center;\r\n color: #6F758D;\r\n cursor: pointer;\r\n text-decoration: none;\r\n position: relative;\r\n flex: 0 0 auto;\r\n min-width: 0;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n transition: background-color 0.2s ease-in-out;\r\n }\r\n\r\n .tab:hover {\r\n background-color: #E7E8EC;\r\n }\r\n\r\n .tab.active {\r\n color: #2175D9;\r\n }\r\n\r\n .tab.active::after {\r\n height: 2px;\r\n background-color: #2175D9;\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n width: 100%;\r\n pointer-events: none;\r\n }\r\n\r\n .tab.active img {\r\n filter: brightness(0) saturate(100%) invert(28%) sepia(87%) saturate(3514%) hue-rotate(202deg) brightness(92%) contrast(101%);\r\n }\r\n\r\n img {\r\n width: 24px;\r\n height: 24px;\r\n }\r\n\r\n .scroll-container {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n overflow: hidden;\r\n }\r\n\r\n .tab-wrapper {\r\n display: flex;\r\n justify-content: flex-start;\r\n gap: 0px;\r\n overflow-x: auto;\r\n scroll-behavior: smooth;\r\n scrollbar-width: none; /* Firefox */\r\n -ms-overflow-style: none; /* IE 10+ */\r\n flex: 1;\r\n }\r\n\r\n .tab-wrapper::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n .scroll-button {\r\n border: none;\r\n font-size: 24px;\r\n cursor: pointer;\r\n z-index: 1;\r\n width: 56px;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n color: #2175D9;\r\n padding: 0px;\r\n }\r\n\r\n .scroll-button.prev {\r\n justify-content: flex-start;\r\n position: absolute;\r\n left: 0;\r\n background: linear-gradient(90deg, #FFFFFF 0%, #FFFFFF 50%, rgba(255, 255, 255, 0) 100%);\r\n }\r\n\r\n .scroll-button.next {\r\n justify-content: flex-end;\r\n position: absolute;\r\n right: 0;\r\n background: linear-gradient(270deg, #FFFFFF 0%, #FFFFFF 50%, rgba(255, 255, 255, 0) 100%);\r\n }\r\n\r\n @media (max-width: 940px) {\r\n .tab {\r\n ${bodyM};\r\n padding: 16px;\r\n }\r\n }\r\n `;\r\n\r\n firstUpdated() {\r\n this.handleScroll();\r\n }\r\n\r\n updated(changed: Map<string, any>) {\r\n if (changed.has('selected')) {\r\n this.internalSelected = this.selected;\r\n }\r\n }\r\n\r\n private selectTab(value: string) {\r\n this.internalSelected = value;\r\n const selectedTab = this.tabs.find(tab => tab.value === value);\r\n if (selectedTab) {\r\n this.dispatchEvent(new CustomEvent('tab-change', {\r\n detail: selectedTab,\r\n bubbles: true,\r\n composed: true,\r\n }));\r\n }\r\n }\r\n\r\n private scrollTabsLeft() {\r\n const wrapper = this.renderRoot.querySelector('.tab-wrapper');\r\n if (!wrapper) return;\r\n\r\n const scrollLeft = wrapper.scrollLeft;\r\n const tabs = Array.from(wrapper.querySelectorAll('.tab')) as HTMLElement[];\r\n\r\n for (let i = tabs.length - 1; i >= 0; i--) {\r\n const el = tabs[i];\r\n const tabLeft = el.offsetLeft;\r\n\r\n // Esta es la nueva condición clave 👇\r\n if (tabLeft < scrollLeft + this.SCROLL_OFFSET - 1) {\r\n const scrollTarget = tabLeft - this.SCROLL_OFFSET;\r\n wrapper.scrollTo({ left: scrollTarget, behavior: 'smooth' });\r\n break;\r\n }\r\n }\r\n\r\n setTimeout(() => this.handleScroll(), 300);\r\n }\r\n\r\n private scrollTabsRight() {\r\n const wrapper = this.renderRoot.querySelector('.tab-wrapper');\r\n if (!wrapper) return;\r\n\r\n const wrapperLeft = wrapper.scrollLeft;\r\n const tabs = Array.from(wrapper.querySelectorAll('.tab')) as HTMLElement[];\r\n\r\n for (const el of tabs) {\r\n if (el.offsetLeft > wrapperLeft + this.SCROLL_OFFSET) {\r\n const scrollTarget = el.offsetLeft - this.SCROLL_OFFSET;\r\n wrapper.scrollTo({ left: scrollTarget, behavior: 'smooth' });\r\n break;\r\n }\r\n }\r\n\r\n setTimeout(() => this.handleScroll(), 300);\r\n }\r\n\r\n private handleScroll = () => {\r\n const wrapper = this.renderRoot.querySelector('.tab-wrapper');\r\n if (!wrapper) return;\r\n\r\n const { scrollLeft, scrollWidth, clientWidth } = wrapper;\r\n\r\n this.showPrev = scrollLeft > 0;\r\n this.showNext = scrollLeft + clientWidth < scrollWidth - 1;\r\n };\r\n\r\n render() {\r\n return html`\r\n <div class=\"scroll-container\">\r\n ${this.showPrev ? html`\r\n <button class=\"scroll-button prev\" @click=${this.scrollTabsLeft}>\r\n <randstad-icon name=\"arrow_left\" size=\"36px\"></randstad-icon>\r\n </button>\r\n ` : null}\r\n\r\n <div class=\"tab-wrapper\" @scroll=${this.handleScroll}>\r\n ${this.tabs.map(tab => html`\r\n <div class=\"tab ${this.internalSelected === tab.value ? 'active' : ''}\"\r\n @click=${() => this.selectTab(tab.value)}>\r\n <img src=\"/assets/icons/${tab.icon}\" alt=\"${tab.label}\" />\r\n <span>${tab.label}</span>\r\n </div>\r\n `)}\r\n </div>\r\n\r\n ${this.showNext ? html`\r\n <button class=\"scroll-button next\" @click=${this.scrollTabsRight}>\r\n <randstad-icon name=\"arrow_right\" size=\"36px\"></randstad-icon>\r\n </button>\r\n ` : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { bodyS, bodyXS } from '../styles/fontStyles';\r\n\r\n@customElement('upload-image')\r\nexport class UploadImage extends LitElement {\r\n @property({ type: Array }) files: File[] = [];\r\n @state() private loading = false;\r\n @state() private progress = 0;\r\n\r\n @state() private isDragging = false;\r\n @property({ type: Boolean, reflect: true }) disabled = false;\r\n\r\n static styles = css`\r\n\r\n :host {\r\n font-family: 'Graphik', sans-serif;\r\n }\r\n\r\n .container {\r\n display: flex;\r\n gap: 16px;\r\n flex-direction: column;\r\n border: 1px solid var(--secondary-color-10);\r\n border-radius: 4px;\r\n padding: 16px;\r\n align-items: center;\r\n background-color: var(--white);\r\n transition: border 0.2s ease, outline 0.2s ease;\r\n }\r\n\r\n .container.dragging {\r\n border: 1px dashed var(--secondary-color-40);\r\n }\r\n \r\n .icon {\r\n width: 40px;\r\n height: 40px\r\n }\r\n\r\n .text-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n gap: 8px;\r\n }\r\n\r\n .text-main {\r\n ${bodyS};\r\n text-align: center;\r\n vertical-align: middle;\r\n color: var(--secondary-color-80);\r\n }\r\n\r\n .text-secondary {\r\n ${bodyXS};\r\n text-align: center;\r\n vertical-align: middle;\r\n color: var(--secondary-color-60);\r\n }\r\n\r\n .text-tertiary {\r\n ${bodyXS};\r\n text-align: center;\r\n vertical-align: middle;\r\n color: var(--secondary-color-40);\r\n }\r\n\r\n .button {\r\n ${bodyXS};\r\n background-color: var(--primary-color);\r\n border: none;\r\n padding: 4px 16px;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n color: var(--white);\r\n text-align: center;\r\n vertical-align: middle;\r\n }\r\n\r\n :host([disabled]) .button {\r\n background-color: var(--secondary-color-20);\r\n color: var(--secondary-color-80);\r\n cursor: not-allowed;\r\n }\r\n\r\n input[type=\"file\"] {\r\n display: none;\r\n }\r\n\r\n .progress-bar-container {\r\n min-height: 23px;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .progress-bar {\r\n min-width: 80px;\r\n height: 8px;\r\n background-color: var(--secondary-color-20);\r\n border-radius: 999px;\r\n overflow: hidden;\r\n }\r\n\r\n .progress-bar-fill {\r\n height: 100%;\r\n background-color: var(--primary-color);\r\n transition: width 0.1s ease;\r\n }\r\n `;\r\n\r\n private handleFiles(files: FileList | null) {\r\n if (!files || this.loading) return;\r\n\r\n const selected = Array.from(files).slice(0, 3 - this.files.length);\r\n\r\n this.loading = true;\r\n this.progress = 0;\r\n\r\n const interval = setInterval(() => {\r\n this.progress += 5;\r\n if (this.progress >= 100) {\r\n clearInterval(interval);\r\n this.files = [...this.files, ...selected];\r\n this.loading = false;\r\n this.progress = 0;\r\n this.dispatchEvent(new CustomEvent('files-changed', { detail: this.files }));\r\n }\r\n }, 100);\r\n }\r\n\r\n private onFileInputChange(e: Event) {\r\n const target = e.target as HTMLInputElement;\r\n this.handleFiles(target.files);\r\n }\r\n\r\n private onDrop(e: DragEvent) {\r\n e.preventDefault();\r\n if (this.disabled) return;\r\n this.isDragging = false;\r\n this.handleFiles(e.dataTransfer?.files || null);\r\n }\r\n\r\n private onDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n if (this.disabled) return;\r\n this.isDragging = true;\r\n }\r\n\r\n private onDragLeave(e: DragEvent) {\r\n e.preventDefault();\r\n if (this.disabled) return;\r\n this.isDragging = false;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"container ${this.isDragging ? 'dragging' : ''}\"\r\n @drop=\"${this.onDrop}\"\r\n @dragover=\"${this.onDragOver}\"\r\n @dragleave=\"${this.onDragLeave}\">\r\n <img class=\"icon\"\r\n src=${this.disabled\r\n ? '/assets/img/image-upload-disabled.svg'\r\n : '/assets/img/image-upload-circle.svg'}\r\n alt=\"Subir imagen\" />\r\n <div class=\"text-container\">\r\n <div class=\"text-main\">subí hasta 3 imágenes</div>\r\n <div class=\"text-secondary\">\r\n Podés agregar un archivo o arrastrar y soltar acá\r\n </div>\r\n <div class=\"text-tertiary\">.jpg, .jpeg, .png</div>\r\n </div>\r\n ${this.loading\r\n ? html`\r\n <div class=\"progress-bar-container\">\r\n <div class=\"progress-bar\" role=\"progressbar\" aria-label=\"Subiendo archivo…\">\r\n <div class=\"progress-bar-fill\" style=\"width: ${this.progress}%;\"></div>\r\n </div>\r\n </div>\r\n `\r\n : html`\r\n <label class=\"button\">\r\n agregar archivo\r\n <input type=\"file\" accept=\".jpg,.jpeg,.png\" multiple @change=\"${this.onFileInputChange}\" />\r\n </label>\r\n `}\r\n </div>\r\n `;\r\n }\r\n}"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","SuppressedError","t","e","o","addInitializer","customElements","define","globalThis","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","WeakMap","n$3","constructor","this","_$cssResult$","Error","cssText","styleSheet","get","replaceSync","set","toString","cssRules","n","is","h","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","b","attribute","type","String","converter","reflect","useDefault","hasChanged","litPropertyMetadata","y","HTMLElement","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","hasOwnProperty","create","wrapped","elementProperties","noAccessor","getPropertyDescriptor","call","requestUpdate","configurable","enumerable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$ET","removeAttribute","_$Ej","hasAttribute","C","_$EP","has","_$Eq","reject","scheduleUpdate","performUpdate","shouldUpdate","willUpdate","hostUpdate","update","_$EM","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","kind","name","init","querySelector","bodyXS","css","bodyS","bodyM","bodyL","titleXXS","titleXS","titleS","AccordionPanel","LitElement","title","isOpen","isDesktop","window","innerWidth","handleResize","addEventListener","removeEventListener","toggle","renderIcon","html","render","property","customElement","AccordionList","RandstadButton","variant","label","loader","iconPosition","disabled","iconName","idevent","handleClick","event","form","closest","requestSubmit","reset","dispatchEvent","CustomEvent","detail","composed","bubbles","cancelable","classes","button","dotColor","classMap","iconSrc","CarouselCard","img","description","buttonLabel","cardId","Checkbox","checked","error","toggleCheck","Event","RandstadForm","value","icon","helper","errorMessage","typing","isPasswordVisible","cleanButton","required","optional","togglePassword","input","currentTarget","parentElement","handleInput","newValue","undefined","maxLength","slice","handleClear","handleLinkClick","preventDefault","linkRoute","handleKeyDown","submitEvent","showCleanButton","labelColor","nothing","helpLink","placeholder","linkText","FormGroup","IconComponent","style","setProperty","changedProps","loadIcon","response","fetch","ok","svgText","text","parser","DOMParser","svgElement","parseFromString","querySelectorAll","el","innerHTML","console","RandstadNotice","message","open","CustomModal","showNotice","noticeType","noticeMessage","noticeIcon","showPrimaryButton","primaryButtonLabel","showSecondaryButton","secondaryButtonLabel","scrollable","setScrollableMode","closeModal","subtitle","CustomPopup","width","buttonText","confirmText","cancelText","stackedActions","_onBackgroundClick","path","composedPath","popupContainer","includes","focus","closePopup","action","ProgressCircle","max","circumference","Math","PI","safeMax","offset","min","ATTACHABLE_CONTROLLER","FOR_ATTRIBUTE_OBSERVER","isServer","MutationObserver","records","record","AttachableController","htmlFor","host","getAttribute","control","getRootNode","currentControl","attach","detach","onControlChange","observe","attributeFilter","setCurrentControl","EVENTS","FocusRing","visible","inward","attachableController","bind","handleEvent","HANDLED_BY_FOCUS_RING","matches","prev","next","changed","MdFocusRing","EASING","State","FORCED_COLORS","matchMedia","Ripple","hovered","pressed","rippleSize","rippleScale","initialSize","INACTIVE","checkBoundsAfterContextMenu","handlePointerenter","shouldReactToEvent","handlePointerleave","endPressAnimation","handlePointerup","HOLDING","TOUCH_DELAY","WAITING_FOR_CLICK","startPressAnimation","rippleStartEvent","handlePointerdown","isTouch","inBounds","resolve","setTimeout","handlePointercancel","handleContextmenu","determineRippleSize","height","getBoundingClientRect","maxDim","softEdgeSize","floor","maxRadius","sqrt","getNormalizedPointerEventCoords","pointerEvent","scrollX","scrollY","left","top","documentX","documentY","pageX","pageY","x","getTranslationCoordinates","positionEvent","endPoint","startPoint","PointerEvent","mdRoot","growAnimation","cancel","translateStart","translateEnd","animate","transform","pseudoElement","duration","easing","fill","animation","pressAnimationPlayState","Infinity","currentTime","to","isPrimary","pointerId","isPrimaryButton","buttons","bottom","right","pointerType","query","MdRipple","isActivationClick","squelched","isSquelchingEvents","stopImmediatePropagation","async","squelchEventsForMicrotask","squelchEvent","internals","privateInternals","createValidator","getValidityAnchor","privateValidator","privateSyncValidity","privateCustomValidationMessage","isFocusable","privateIsFocusable","externalTabIndex","isUpdatingTabIndex","updateTabIndex","getFormValue","getFormState","Validator","getCurrentState","currentValidity","validity","validationMessage","getValidity","prevState","equals","computeValidity","copy","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","RadioValidator","states","radioElement","isRequired","isChecked","prevGroup","nextGroup","SingleSelectionController","controls","root","from","focused","handleFocusIn","updateTabIndices","handleFocusOut","isDown","isUp","isLeft","isRight","siblings","forwards","getComputedStyle","direction","hostIndex","indexOf","nextIndex","nextSibling","sibling","tabIndex","blur","uncheckSiblings","handleCheckedChange","checkedSibling","find","focusable","_a","CHECKED","maskId","radioBaseClass","base","ConstraintValidationElement","willValidate","checkValidity","reportValidity","setCustomValidity","oldValue","options","nonCustomValidationMessage","setValidity","mixinConstraintValidation","FormAssociatedElement","labels","toggleAttribute","old","setFormValue","formDisabledCallback","formAssociated","mixinFormAssociated","_b","_c","FocusableElement","internalTabIndex","computedTabIndex","mixinFocusable","attachInternals","Radio","wasChecked","selectionController","role","handleKeydown","ariaChecked","defaultPrevented","InputEvent","click","formResetCallback","formStateRestoreCallback","container","MdRadio","CustomRadio","radioClasses","join","i$1","_$AU","_$AM","_$AT","_$Ct","_$Ci","_$AS","createPolicy","createHTML","random","toFixed","createComment","v","_","m","RegExp","g","$","T","for","E","A","createTreeWalker","P","V","lastIndex","exec","test","startsWith","N","strings","_$litType$","parts","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","split","index","ctor","H","I","L","k","tagName","append","data","S","_$Co","_$Cl","_$litDirective$","_$AO","values","M","_$AV","_$AN","_$AD","parentNode","creationScope","importNode","R","z","_$AI","_$Cv","_$AH","_$AA","_$AB","startNode","endNode","_$AR","iterator","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","j","capture","once","passive","litHtmlPolyfillSupport","litHtmlVersions","it","directiveName","_t","raw","resultType","FilterableSelect","defaultValue","filterable","isMobile","filteredOptions","filterValue","mobileFilterValue","highlightedIndex","_isCleared","debounceTimeout","updateResponsiveModeBound","updateResponsiveMode","changedProperties","targetValue","match","opt","handleClickOutside","handleInputClick","rawValue","filter","option","clearTimeout","handleMobileInput","handleSelect","handleIconClick","Node","contains","renderSelectedIcon","selectedOption","unsafeSVG","stopPropagation","isDisabled","globalStyles","RandstadSnackbar","position","updateResponsiveStyles","classList","ariaRole","CustomStepper","totalSteps","currentStep","TabsBar","tabs","selected","internalSelected","showPrev","showNext","SCROLL_OFFSET","handleScroll","wrapper","scrollLeft","scrollWidth","clientWidth","selectTab","selectedTab","tab","scrollTabsLeft","tabLeft","offsetLeft","scrollTarget","scrollTo","behavior","scrollTabsRight","wrapperLeft","UploadImage","files","loading","progress","isDragging","handleFiles","interval","setInterval","clearInterval","onFileInputChange","onDrop","dataTransfer","onDragOver","onDragLeave"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,43,44]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/@lit/reactive-element/decorators/base.js","../src/styles/fontStyles.ts","../src/components/Accordion.ts","../src/components/AccordionList.ts","../src/components/Button.ts","../src/components/CarouselCards.ts","../src/components/Checkbox.ts","../src/components/Form.ts","../src/components/FormGroup.ts","../src/components/Icon.ts","../src/components/Notice.ts","../src/components/Modal.ts","../src/components/Popup.ts","../src/components/ProgressCircle.ts","../node_modules/@material/web/internal/controller/attachable-controller.js","../node_modules/@material/web/focus/internal/focus-ring.js","../node_modules/@material/web/focus/internal/focus-ring-styles.js","../node_modules/@material/web/focus/md-focus-ring.js","../node_modules/@material/web/internal/motion/animation.js","../node_modules/@material/web/ripple/internal/ripple.js","../node_modules/@material/web/ripple/internal/ripple-styles.js","../node_modules/@material/web/ripple/ripple.js","../node_modules/@material/web/internal/events/form-label-activation.js","../node_modules/@material/web/labs/behaviors/element-internals.js","../node_modules/@material/web/labs/behaviors/constraint-validation.js","../node_modules/@material/web/labs/behaviors/focusable.js","../node_modules/@material/web/labs/behaviors/form-associated.js","../node_modules/@material/web/labs/behaviors/validators/validator.js","../node_modules/@material/web/labs/behaviors/validators/radio-validator.js","../node_modules/@material/web/radio/internal/single-selection-controller.js","../node_modules/@material/web/radio/internal/radio.js","../node_modules/@material/web/radio/internal/radio-styles.js","../node_modules/@material/web/radio/radio.js","../src/components/Radio.ts","../node_modules/lit-html/directive.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-html/directives/unsafe-html.js","../node_modules/lit-html/directives/unsafe-svg.js","../node_modules/dompurify/dist/purify.es.mjs","../src/components/Select.ts","../src/styles/globalStyles.ts","../src/components/Snackbar.ts","../src/components/Stepper.ts","../src/components/Tabs.ts","../src/components/Upload.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","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=h.fromAttribute(s,t.type)??this._$Ej?.get(e)??null,this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){const e=this.constructor,h=this[t];if(i??=e.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(e._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.0\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import { css } from 'lit';\r\n\r\nexport const bodyXS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 15px;\r\n letter-spacing: 0%;\r\n`;\r\n\r\nexport const bodyS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 25px;\r\n letter-spacing: 0%;\r\n`;\r\n\r\nexport const bodyM = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 16px;\r\n line-height: 25px;\r\n letter-spacing: 0%;\r\n`;\r\n\r\nexport const bodyL = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 18px;\r\n line-height: 30px;\r\n letter-spacing: 0%;\r\n`;\r\n\r\nexport const titleXXS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 18px;\r\n line-height: 30px;\r\n letter-spacing: 0%;\r\n vertical-align: middle;\r\n`;\r\n\r\nexport const titleXS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 20px;\r\n line-height: 30px;\r\n letter-spacing: -1%;\r\n vertical-align: middle;\r\n`;\r\n\r\nexport const titleS = css`\r\n font-family: 'Graphik', sans-serif;\r\n font-weight: 400;\r\n font-size: 26px;\r\n line-height: 30px;\r\n letter-spacing: -1%;\r\n vertical-align: middle;\r\n`;\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { bodyM } from '../styles/fontStyles';\r\n\r\n@customElement('accordion-panel')\r\nexport class AccordionPanel extends LitElement {\r\n @property({ type: String }) title = '';\r\n @state() private isOpen = false;\r\n @state() private isDesktop = window.innerWidth > 940;\r\n\r\n static styles = css`\r\n :host {\r\n display: flex;\r\n flex-direction: column;\r\n font-family: 'Graphik', sans-serif;\r\n position: relative;\r\n }\r\n\r\n .header {\r\n display: flex;\r\n justify-content: space-between;\r\n gap: 16px;\r\n flex-direction: row;\r\n align-items: center;\r\n cursor: pointer;\r\n padding-bottom: 16px;\r\n }\r\n\r\n .title {\r\n ${bodyM}\r\n color: var(--secondary-color);\r\n }\r\n\r\n .icon-wrapper {\r\n width: 40px;\r\n height: 40px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: background-color 0.3s ease;\r\n }\r\n\r\n .icon {\r\n transition: transform 0.3s;\r\n }\r\n\r\n .content {\r\n overflow: hidden;\r\n max-height: 0;\r\n transition: max-height 0.3s ease, padding-bottom 0.3s ease;\r\n }\r\n\r\n .content.open {\r\n max-height: 1000px;\r\n padding-bottom: 16px;\r\n }\r\n\r\n :host::after {\r\n content: '';\r\n display: block;\r\n height: 1px;\r\n background-color: var(--secondary-color-20);\r\n width: 100%;\r\n }\r\n\r\n @media (min-width: 941px) {\r\n .header {\r\n align-items: flex-start;\r\n }\r\n .header:hover .icon-wrapper {\r\n background-color: var(--primary-color-5);\r\n }\r\n }\r\n `;\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n window.addEventListener('resize', this.handleResize);\r\n }\r\n\r\n disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n window.removeEventListener('resize', this.handleResize);\r\n }\r\n\r\n private handleResize = () => {\r\n this.isDesktop = window.innerWidth > 940;\r\n };\r\n\r\n private toggle() {\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n private renderIcon() {\r\n return this.isOpen\r\n ? html`<randstad-icon name=\"arrow_up\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`\r\n : html`<randstad-icon name=\"arrow_down\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"header\" @click=${this.toggle}>\r\n <div class=\"title\">${this.title}</div>\r\n <div class=\"icon\">\r\n ${this.isDesktop\r\n ? html`\r\n <div class=\"icon-wrapper\">\r\n ${this.renderIcon()}\r\n </div>\r\n `\r\n : this.renderIcon()}\r\n </div>\r\n </div>\r\n <div class=\"content ${this.isOpen ? 'open' : ''}\">\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n\r\n}\r\n","import { LitElement, css, html } from 'lit';\r\nimport { customElement } from 'lit/decorators.js';\r\n\r\n@customElement('accordion-list')\r\nexport class AccordionList extends LitElement {\r\n static styles = css`\r\n :host {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`<slot></slot>`;\r\n }\r\n}","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyM, bodyL } from '../styles/fontStyles';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport '../styles/buttons.css';\r\n\r\n@customElement('randstad-button')\r\nexport class RandstadButton extends LitElement {\r\n @property({ type: String }) variant: 'button-primary' | 'button-secondary' | 'button-tertiary' | 'button-round' | 'button-card' = 'button-primary';\r\n @property({ type: String }) size: 'md' | 'lg' = 'md';\r\n @property({ type: String }) label = '';\r\n @property({ type: Boolean }) loader = false;\r\n @property({ type: String, attribute: 'icon-src' }) iconSrc?: string;\r\n @property({ type: String }) iconPosition: 'left' | 'right' = 'left';\r\n @property({ type: Boolean, reflect: true }) disabled: boolean = false;\r\n @property({ type: String }) iconName: string | null = null;\r\n @property({ type: String }) type: 'button' | 'submit' | 'reset' = 'button';\r\n @property({ type: String }) idevent='';\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n font-weight: 400;\r\n padding: 16px;\r\n border: none;\r\n transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;\r\n gap: 4px;\r\n width: 100%;\r\n }\r\n\r\n .button-lg {\r\n ${bodyL}\r\n min-height: 62px;\r\n }\r\n\r\n .button-md {\r\n ${bodyM}\r\n min-height: 57px;\r\n }\r\n\r\n /* Primary */\r\n .button-primary {\r\n background-color: var(--primary-color);\r\n color: var(--white);\r\n }\r\n\r\n .button-primary:not([disabled]):hover {\r\n background-color: var(--primary-button-hover);\r\n }\r\n\r\n .button-primary:not([disabled]):active {\r\n background-color: var(--primary-button-active);\r\n }\r\n\r\n .button-primary:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-button-focus);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-primary[disabled] {\r\n color: var(--secondary-color-60);\r\n background-color: var(--secondary-color-20);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Secondary */\r\n .button-secondary {\r\n background: none;\r\n color: var(--primary-color);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n .button-secondary:not([disabled]):hover {\r\n color: var(--primary-button-hover);\r\n border-color: var(--primary-button-hover);\r\n }\r\n\r\n .button-secondary:not([disabled]):active {\r\n color: var(--secondary-color-80);\r\n border-color: var(--secondary-color-80);\r\n }\r\n\r\n .button-secondary:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-color);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-secondary[disabled] {\r\n color: var(--secondary-color-60);\r\n border-color: var(--secondary-color-60);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Tertiary */\r\n .button-tertiary {\r\n background: none;\r\n border: none;\r\n color: var(--primary-color);\r\n }\r\n\r\n .button-tertiary:not([disabled]):hover {\r\n background: var(--primary-color-5);\r\n }\r\n\r\n .button-tertiary:not([disabled]):active {\r\n background-color: var(--primary-color-10);\r\n }\r\n\r\n .button-tertiary:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-color);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-tertiary[disabled] {\r\n color: var(--secondary-color-60);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Round */\r\n .button-round {\r\n width: 48px;\r\n height: 48px;\r\n border-radius: 50%;\r\n background-color: var(--white);\r\n box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2);\r\n padding: 0;\r\n }\r\n\r\n .button-round:not([disabled]):hover {\r\n background-color: var(--randstad-blue-10);\r\n }\r\n\r\n .button-round:not([disabled]):active {\r\n background-color: var(--randstad-blue-40);\r\n }\r\n\r\n .button-round:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-color);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-round[disabled] {\r\n background-color: var(--secondary-color-20);\r\n cursor: not-allowed;\r\n }\r\n\r\n .button-round img.button-icon {\r\n width: 24px;\r\n height: 24px;\r\n }\r\n\r\n /* Loader */\r\n .loader {\r\n display: flex;\r\n gap: 8px;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .dot {\r\n border-radius: 50%;\r\n display: inline-block;\r\n animation: growAndFade 2.4s infinite ease-in-out;\r\n }\r\n\r\n .button-md .dot {\r\n width: 6px;\r\n height: 6px;\r\n }\r\n\r\n .button-lg .dot {\r\n width: 8px;\r\n height: 8px;\r\n }\r\n\r\n .dot:nth-child(1) { animation-delay: 0s; }\r\n .dot:nth-child(2) { animation-delay: 0.8s; }\r\n .dot:nth-child(3) { animation-delay: 1.6s; }\r\n\r\n @keyframes growAndFade {\r\n 0% { transform: scale(1); }\r\n 16.67% { transform: scale(1.5); }\r\n 33.33% { transform: scale(1.5); }\r\n 50% { transform: scale(1); }\r\n 100% { transform: scale(1); }\r\n }\r\n\r\n .button-primary.loader .dot,\r\n .button-secondary.loader .dot {\r\n background-color: var(--white);\r\n }\r\n\r\n .button-secondary.loader {\r\n background-color: var(--primary-color);\r\n border: none;\r\n color: var(--white);\r\n }\r\n\r\n .button-card {\r\n font-family: 'Graphik';\r\n background-color: var(--primary-color);\r\n color: var(--white);\r\n border-radius: 4px;\r\n padding: 4px 16px;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 15px;\r\n letter-spacing: 0%;\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n }\r\n\r\n .button-card:not([disabled]):hover {\r\n background-color: #175197;\r\n }\r\n\r\n .button-card:not([disabled]):active {\r\n background-color: #124077;\r\n }\r\n\r\n .button-card:not([disabled]):focus-visible {\r\n outline: 2px solid var(--primary-color);\r\n outline-offset: 2px;\r\n }\r\n\r\n .button-card[disabled] {\r\n background-color: #CFD1D9;\r\n color: #6F758D;\r\n cursor: not-allowed;\r\n }\r\n\r\n `;\r\n\r\n private handleClick(event: Event) {\r\n if (this.disabled) return;\r\n\r\n if (this.type === 'submit') {\r\n const form = this.closest('form');\r\n if (form) form.requestSubmit();\r\n } else if( this.type === 'reset'){\r\n const form = this.closest('form');\r\n if (form) form.reset();\r\n } else if(this.idevent){\r\n const result = this.dispatchEvent(new CustomEvent('randstad-button-click',{detail:this.idevent,composed:true, bubbles: true, cancelable: false}))\r\n }\r\n }\r\n\r\n render() {\r\n const classes = {\r\n button: true,\r\n [this.variant]: true,\r\n loader: this.loader,\r\n [`button-${this.size}`]: this.variant !== 'button-round' && this.variant !== 'button-card',\r\n };\r\n \r\n const dotColor = this.variant === 'button-tertiary' ? 'var(--primary-color)' : 'white';\r\n\r\n return html`\r\n <button\r\n part=\"button\"\r\n type=${this.type}\r\n class=${classMap(classes)}\r\n ?disabled=${this.disabled}\r\n ?aria-busy=${this.loader}\r\n @click=${this.handleClick}\r\n >\r\n ${this.loader\r\n ? html`\r\n <div class=\"loader\">\r\n <span class=\"dot\" style=\"background-color: ${dotColor};\"></span>\r\n <span class=\"dot\" style=\"background-color: ${dotColor};\"></span>\r\n <span class=\"dot\" style=\"background-color: ${dotColor};\"></span>\r\n </div>\r\n `\r\n : html`\r\n ${this.iconSrc && this.variant === 'button-round'\r\n ? html`<img src=${this.iconSrc} alt=\"icon\" class=\"button-icon\" part=\"button-icon\"/>`\r\n : ''}\r\n ${this.iconName && this.variant !== 'button-round' && this.iconPosition === 'left'\r\n ? html`<randstad-icon name=${this.iconName} size=\"24px\"></randstad-icon>`\r\n : ''}\r\n ${this.label ? html`<span part=\"label\">${this.label}</span>` : html`<slot></slot>`}\r\n ${this.iconName && this.variant !== 'button-round' && this.iconPosition === 'right'\r\n ? html`<randstad-icon name=${this.iconName} size=\"24px\"></randstad-icon>`\r\n : ''}\r\n `}\r\n </button>\r\n `;\r\n }\r\n}","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyS, bodyL } from '../styles/fontStyles';\r\n\r\n@customElement('carousel-card')\r\nexport class CarouselCard extends LitElement {\r\n @property({ type: String }) img = '';\r\n @property({ type: String }) name = '';\r\n @property({ type: String }) title = '';\r\n @property({ type: String }) description = '';\r\n @property({ type: String }) buttonLabel = 'Contactanos';\r\n @property({ type: String }) cardId = '';\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n font-family: \"Graphik\", sans-serif;\r\n }\r\n\r\n .image-container {\r\n width: 280px;\r\n height: 390px;\r\n position: relative;\r\n border-radius: 8px;\r\n overflow: hidden;\r\n background-size: cover;\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n display: flex;\r\n align-items: flex-end;\r\n }\r\n\r\n .overlay-gradient,\r\n .overlay-hover {\r\n position: absolute;\r\n inset: 0;\r\n border-radius: 8px;\r\n transition: opacity 1s ease;\r\n z-index: 0;\r\n pointer-events: none;\r\n }\r\n\r\n .overlay-gradient {\r\n background: linear-gradient(180deg, rgba(15, 25, 65, 0) 0%, rgba(15, 25, 65, 0.279522) 48.01%, rgba(15, 25, 65, 0.6) 80.13%, rgba(15, 25, 65, 0.6) 100%);\r\n opacity: 1;\r\n }\r\n\r\n .overlay-hover {\r\n background: #0F1941CC;\r\n opacity: 0;\r\n }\r\n\r\n .image-container:hover .overlay-hover {\r\n opacity: 1;\r\n }\r\n\r\n .content-container {\r\n position: relative;\r\n z-index: 1;\r\n color: #FFFFFF;\r\n padding: 24px;\r\n box-sizing: border-box;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n .title-wrapper {\r\n margin-bottom: 0; /* reset, por si acaso */\r\n }\r\n\r\n .title {\r\n ${bodyL}\r\n margin: 0;\r\n }\r\n\r\n .details {\r\n max-height: 0;\r\n overflow: hidden;\r\n opacity: 0;\r\n transform: translateY(40px);\r\n transition: max-height 0.4s ease, opacity 0.4s ease, transform 0.4s ease;\r\n }\r\n\r\n .image-container:hover .details {\r\n max-height: 240px;\r\n opacity: 1;\r\n transform: translateY(0);\r\n overflow: visible;\r\n }\r\n\r\n .description {\r\n ${bodyS}\r\n }\r\n\r\n ::part(button) {\r\n color: white;\r\n border: 1px solid white;\r\n background: transparent;\r\n text-align: left;\r\n }\r\n\r\n ::part(button):hover {\r\n background-color: rgba(255, 255, 255, 0.1);\r\n }\r\n\r\n ::part(button):active {\r\n background-color: rgba(255, 255, 255, 0.2);\r\n } \r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"image-container\" style=\"background-image: url(${this.img});\">\r\n <div class=\"overlay-gradient\"></div>\r\n <div class=\"overlay-hover\"></div>\r\n <div class=\"content-container\">\r\n <div class=\"title-wrapper\">\r\n <h3 class=\"title\">${this.name}</h3>\r\n </div>\r\n <div class=\"details\">\r\n <p class=\"description\">${this.description}</p>\r\n ${\r\n this.cardId ?\r\n html`<randstad-button\r\n variant=\"button-tertiary\"\r\n .label=${this.buttonLabel}\r\n idevent=${this.cardId}\r\n ></randstad-button>`\r\n :\r\n html`<randstad-button\r\n variant=\"button-tertiary\"\r\n .label=${this.buttonLabel}\r\n ></randstad-button>`\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n}\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyS } from '../styles/fontStyles';\r\n\r\n@customElement('randstad-checkbox')\r\nexport class Checkbox extends LitElement {\r\n @property({ type: Boolean, reflect: true }) checked = false;\r\n @property({ type: Boolean }) error = false;\r\n @property({ type: Boolean }) disabled = false;\r\n\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n max-width: 100%;\r\n }\r\n\r\n label {\r\n ${bodyS}\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n color: var(--secondary-color);\r\n }\r\n\r\n input[type=\"checkbox\"] {\r\n min-width: 24px;\r\n min-height: 24px;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n border: 1px solid var(--secondary-color-20);\r\n appearance: none;\r\n position: relative;\r\n }\r\n\r\n input[type=\"checkbox\"]:checked {\r\n background-color: var(--primary-color);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n input[type=\"checkbox\"]:checked::after {\r\n content: '';\r\n position: absolute;\r\n left: 8px;\r\n top: 4px;\r\n width: 5px;\r\n height: 11px;\r\n border: solid white;\r\n border-width: 0 1px 1px 0;\r\n transform: rotate(45deg);\r\n }\r\n\r\n input[type=\"checkbox\"]:checked:disabled::after {\r\n border-color: var(--secondary-color-40);\r\n }\r\n\r\n label.error input[type=\"checkbox\"]:checked:disabled::after {\r\n border-color: white;\r\n }\r\n\r\n .terms-text {\r\n display: inline;\r\n }\r\n\r\n .terms-text ::slotted(a) {\r\n color: var(--primary-color);\r\n text-decoration: none;\r\n cursor: pointer;\r\n }\r\n\r\n input[type=\"checkbox\"].error,\r\n label.error input[type=\"checkbox\"]:not(:disabled) {\r\n border-color: var(--ui-negative);\r\n }\r\n\r\n /* Hover sin error (solo si no está deshabilitado) */\r\n input[type=\"checkbox\"]:hover:not(:disabled):not(.error) {\r\n box-shadow: 0 0 0 4px var(--secondary-color-10);\r\n }\r\n\r\n /* Hover con error (solo si no está deshabilitado) */\r\n label.error input[type=\"checkbox\"]:hover:not(:disabled) {\r\n box-shadow: 0px 0px 0px 4px #E00F0F1A;\r\n }\r\n\r\n /* ✅ Focus sin error */\r\n input[type=\"checkbox\"]:focus-visible:not(:disabled):not(.error),\r\n label:not(.error) input[type=\"checkbox\"]:focus-visible:not(:disabled) {\r\n outline: none;\r\n box-shadow: 0 0 0 4px var(--secondary-color-10);\r\n }\r\n\r\n /* ❌ Focus con error */\r\n label.error input[type=\"checkbox\"]:focus-visible:not(:disabled) {\r\n outline: none;\r\n box-shadow: 0 0 0 4px #E00F0F1A;\r\n }\r\n\r\n input[type=\"checkbox\"].error:checked,\r\n label.error input[type=\"checkbox\"]:checked {\r\n background-color: var(--ui-negative);\r\n border-color: var(--ui-negative);\r\n }\r\n\r\n input[type=\"checkbox\"]:disabled {\r\n background-color: var(--secondary-color-10);\r\n border-color: var(--secondary-color-20);\r\n cursor: not-allowed;\r\n }\r\n\r\n `;\r\n\r\n private toggleCheck(event: Event) {\r\n this.checked = (event.target as HTMLInputElement).checked;\r\n\r\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\r\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\r\n this.dispatchEvent(new Event('click', { bubbles: true, composed: true }));\r\n }\r\n\r\n render() {\r\n return html`\r\n <label class=\"${this.error ? 'error' : ''} ${this.disabled ? 'disabled' : ''}\">\r\n <input\r\n type=\"checkbox\"\r\n role=\"checkbox\"\r\n aria-checked=${this.checked ? 'true' : 'false'}\r\n .checked=${this.checked}\r\n ?disabled=${this.disabled}\r\n @change=${this.toggleCheck}\r\n @focus=${() => this.setAttribute('focused', '')}\r\n @blur=${() => this.removeAttribute('focused')}\r\n />\r\n <span class=\"terms-text\">\r\n <slot></slot>\r\n </span>\r\n </label>\r\n `;\r\n }\r\n}","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyM, bodyL, bodyXS } from '../styles/fontStyles';\r\n\r\n@customElement('randstad-form')\r\nexport class RandstadForm extends LitElement {\r\n @property({ type: String }) placeholder?: string;\r\n @property({ type: String }) label?: string;\r\n @property({ type: String }) labelColor?: string;\r\n @property({ type: String }) value?: string = '';\r\n @property({ type: String }) size: 'sm' | 'md' | 'lg' = 'md';\r\n @property({ type: String }) icon: 'left' | 'right' | null = null;\r\n @property({ type: String }) helper: string|null = null;\r\n @property({ type: Boolean }) error: boolean = false;\r\n @property({ type: String }) errorMessage: string = '';\r\n @property({ type: Boolean }) disabled: boolean = false;\r\n @property({ type: Boolean }) typing: boolean = false;\r\n @property({ type: String }) type: 'text' | 'password' | 'textarea' = 'text';\r\n @property({ type: String }) tooltipMessage?: string;\r\n @property({ type: String }) linkText?: string;\r\n @property({ type: String }) linkRoute?: string;\r\n @property({ type: Boolean, reflect: true }) isPasswordVisible = false;\r\n @property({ type: Boolean }) cleanButton: boolean = false;\r\n @property({ type: Number }) maxLength?: number;\r\n @property({ type: Boolean }) required = false;\r\n @property({ type: Boolean }) optional = false;\r\n @property({ type: String }) helpLink?: string;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: 'Graphik', sans-serif;\r\n width: 100%;\r\n }\r\n\r\n .form {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n width: 100%;\r\n }\r\n\r\n .label-container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 8px;\r\n }\r\n\r\n .form-label {\r\n ${bodyM}\r\n display: flex;\r\n align-items: baseline;\r\n flex-direction: row;\r\n gap: 4px;\r\n color: var(--label-color, var(--secondary-color-80));\r\n }\r\n\r\n .form-container {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n }\r\n\r\n .form-input {\r\n ${bodyL}\r\n padding: 16px;\r\n border: 1px solid var(--secondary-color-10);\r\n border-radius: 4px;\r\n outline: none;\r\n transition: border-color 0.3s ease, box-shadow 0.3s ease;\r\n width: 100%;\r\n color: var(--secondary-color);\r\n }\r\n\r\n .form.error .form-input {\r\n background-color: var(--ui-negative-5);\r\n border-color: var(--ui-negative);\r\n }\r\n\r\n /* Hover normal (sin error ni foco) */\r\n .form:not(.error):not(:focus-within) .form-input:hover {\r\n box-shadow: 0px 0px 0px 4px var(--form-hover-shadow);\r\n }\r\n\r\n /* Hover con error (sin foco) */\r\n .form.error:not(:focus-within) .form-input:hover {\r\n box-shadow: 0px 0px 0px 4px var(--ui-negative-pink-shadow);\r\n }\r\n\r\n .form-input:focus {\r\n border: 2px solid var(--primary-color)\r\n }\r\n\r\n .form.disabled .form-input {\r\n background-color: var(--secondary-color-10);\r\n cursor: not-allowed;\r\n }\r\n\r\n input::placeholder {\r\n ${bodyL}\r\n color: var(--secondary-color-40);\r\n }\r\n\r\n .input-with-button {\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n }\r\n\r\n .input-with-button input {\r\n width: 100%;\r\n }\r\n \r\n .input-with-button input[type=\"password\"]{\r\n padding-right: 40px; \r\n }\r\n\r\n .input-with-button button {\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 40px;\r\n height: 40px;\r\n }\r\n\r\n .toggle-password randstad-icon {\r\n width: 100%;\r\n height: 100%;\r\n max-width: 32px;\r\n max-height: 32px;\r\n }\r\n\r\n textarea {\r\n ${bodyL}\r\n resize: none;\r\n }\r\n\r\n textarea.form-input {\r\n min-height: 100px;\r\n width: 100%;\r\n }\r\n\r\n .form.disabled textarea.form-input {\r\n background-color: var(--secondary-color-10);\r\n cursor: not-allowed;\r\n }\r\n\r\n .helper-description {\r\n ${bodyM}\r\n color: var(--secondary-color-40);\r\n margin: 0px;\r\n }\r\n\r\n .error-message {\r\n ${bodyM}\r\n color: var(--ui-negative);\r\n margin: 0px;\r\n }\r\n\r\n .link-text {\r\n ${bodyM}\r\n color: var(--primary-color);\r\n cursor: pointer;\r\n text-align: end;\r\n text-decoration: none;\r\n vertical-align: middle;\r\n display: inline;\r\n padding: 0;\r\n margin: 0;\r\n line-height: normal;\r\n }\r\n\r\n .link-text:hover {\r\n color: var(--secondary-color);\r\n }\r\n\r\n randstad-icon {\r\n color: var(--primary-color);\r\n }\r\n\r\n .clean-button {\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 40px;\r\n height: 40px;\r\n }\r\n\r\n .clean-button randstad-icon {\r\n width: 24px;\r\n height: 24px;\r\n }\r\n\r\n // TOOLTIP, NO SE ESTÁ USANDO EN FORMS EN ESTE MOMENTO, PERO SE DEJA POR SI SE NECESITA\r\n .tooltip-wrapper {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n }\r\n\r\n .tooltip {\r\n visibility: hidden;\r\n position: absolute;\r\n top: auto;\r\n right: 125%;\r\n left: auto;\r\n transform: none;\r\n background-color: #333;\r\n color: #fff;\r\n padding: 8px 12px;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n line-height: 20px;\r\n white-space: nowrap;\r\n z-index: 10;\r\n opacity: 0;\r\n transition: opacity 0.2s ease;\r\n }\r\n\r\n .tooltip::after {\r\n content: '';\r\n position: absolute;\r\n right: -6px;\r\n bottom: 50%;\r\n transform: translateY(50%);\r\n width: 0;\r\n height: 0;\r\n border-style: solid;\r\n border-width: 6px 0 6px 6px;\r\n border-color: transparent transparent transparent #333;\r\n }\r\n\r\n .tooltip-wrapper:hover .tooltip {\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n\r\n .required {\r\n color: var(--ui-negative);\r\n }\r\n\r\n .optional {\r\n color: var(--secondary-color-60);\r\n ${bodyXS}\r\n }\r\n `;\r\n\r\n private togglePassword(event: Event) {\r\n this.isPasswordVisible = !this.isPasswordVisible;\r\n const input = (event.currentTarget as HTMLElement).parentElement?.querySelector('input');\r\n if (input) {\r\n input.type = this.isPasswordVisible ? 'text' : 'password';\r\n }\r\n this.requestUpdate();\r\n }\r\n\r\n private handleInput(event: Event) {\r\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\r\n const newValue = target.value;\r\n if (this.maxLength !== undefined && this.type !== 'textarea') {\r\n this.value = newValue.slice(0, this.maxLength);\r\n } else {\r\n this.value = newValue;\r\n }\r\n this.dispatchEvent(new CustomEvent('valueChanged', { detail: this.value }));\r\n this.dispatchEvent(new Event('input', { bubbles: true }));\r\n this.requestUpdate();\r\n }\r\n\r\n private handleClear() {\r\n this.value = '';\r\n this.dispatchEvent(new CustomEvent('valueChanged', { detail: this.value }));\r\n this.dispatchEvent(new Event('input', { bubbles: true }));\r\n this.requestUpdate();\r\n }\r\n\r\n private handleLinkClick(event: Event) {\r\n event.preventDefault();\r\n if (this.linkRoute) {\r\n this.dispatchEvent(\r\n new CustomEvent('linkClicked', {\r\n detail: this.linkRoute,\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n\r\n private handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n const submitEvent = new Event('submit', {\r\n bubbles: true,\r\n composed: true,\r\n cancelable: true,\r\n });\r\n\r\n const form = this.closest('form');\r\n if (form) {\r\n form.dispatchEvent(submitEvent);\r\n }\r\n }\r\n }\r\n\r\n\r\n render() {\r\n const showCleanButton = this.cleanButton && this.value && this.type !== 'password' && this.type !== 'textarea';\r\n\r\n return html`\r\n <div\r\n class=\"form ${this.error ? 'error' : ''} ${this.disabled ? 'disabled' : ''}\"\r\n style=${this.labelColor ? `--label-color: ${this.labelColor}` : nothing}\r\n >\r\n ${this.label ? html`\r\n <div class=\"label-container\">\r\n <label class=\"form-label\">\r\n ${this.label}\r\n ${this.required\r\n ? html`<span class=\"required\">*</span>`\r\n : this.optional\r\n ? html`<span class=\"optional\">opcional</span>`\r\n : nothing}\r\n </label>\r\n ${this.helpLink\r\n ? html`\r\n <a class=\"tooltip-wrapper\" href=\"${this.helpLink}\">\r\n <randstad-icon\r\n name=\"ayuda\"\r\n size=\"20px\">\r\n </randstad-icon>\r\n </a>\r\n `\r\n : nothing}\r\n </div>\r\n ` : nothing}\r\n\r\n <div class=\"form-container\">\r\n ${this.icon === 'left' ? html`<span class=\"icon left\"></span>` : nothing}\r\n\r\n <div class=\"input-with-button\">\r\n ${this.type === 'textarea'\r\n ? html`\r\n <textarea\r\n class=\"form-input\"\r\n placeholder=${this.placeholder || ''}\r\n .value=${this.value}\r\n ?disabled=${this.disabled}\r\n @input=${this.handleInput}\r\n @keydown=${this.handleKeyDown}\r\n maxlength=${this.maxLength ?? nothing}\r\n ></textarea>`\r\n : html`\r\n <input\r\n class=\"form-input\"\r\n type=${this.type === 'password' && !this.isPasswordVisible ? 'password' : 'text'}\r\n placeholder=${this.placeholder || ''}\r\n .value=${this.value}\r\n ?disabled=${this.disabled}\r\n @input=${this.handleInput}\r\n @keydown=${this.handleKeyDown}\r\n maxlength=${this.maxLength ?? nothing}\r\n />\r\n\r\n ${this.type === 'password'\r\n ? html`<button type=\"button\" class=\"toggle-password\" @click=${this.togglePassword}>\r\n ${this.isPasswordVisible\r\n ? html`<randstad-icon name='eye_crossed' size=\"24px\"></randstad-icon>`\r\n : html`<randstad-icon name='eye' size=\"24px\"></randstad-icon>`}\r\n </button>`\r\n : nothing}\r\n\r\n ${showCleanButton\r\n ? html`<button type=\"button\" class=\"clean-button\" @click=${this.handleClear}>\r\n <randstad-icon name=\"close\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>\r\n </button>`\r\n : nothing}\r\n `}\r\n </div>\r\n\r\n ${this.icon === 'right' ? html`<span class=\"icon right\"></span>` : nothing}\r\n </div>\r\n\r\n ${this.error ? html`\r\n <p class=\"error-message\">\r\n ${this.errorMessage ? this.errorMessage : html`<slot name=\"error-extended\"></slot>`}\r\n </p>` : nothing}\r\n\r\n ${this.linkText && this.linkRoute\r\n ? html\r\n `<div style=\"text-align: end;\">\r\n <a class=\"link-text\" @click=${this.handleLinkClick}>${this.linkText}</a>\r\n </div>`\r\n : nothing}\r\n\r\n ${this.helper ? html`<p class=\"helper-description\">${this.helper}</p>` : nothing}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyM, bodyXS } from '../styles/fontStyles';\r\n\r\n@customElement('randstad-form-group')\r\nexport class FormGroup extends LitElement {\r\n @property({ type: String }) label = '';\r\n @property({ type: String }) helper?: string;\r\n @property({ type: Boolean }) error = false;\r\n @property({ type: String }) errorMessage = '';\r\n @property({ type: Boolean }) required = false;\r\n @property({ type: Boolean }) optional = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: flex;\r\n flex-direction: column;\r\n font-family: 'Graphik', sans-serif;\r\n gap: 8px;\r\n width: 100%;\r\n }\r\n\r\n .form-label {\r\n ${bodyM}\r\n display: flex;\r\n align-items: baseline;\r\n flex-direction: row;\r\n gap: 4px;\r\n color: var(--label-color, var(--secondary-color-80));\r\n }\r\n\r\n .fields {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px; /* espaciado entre inputs */\r\n }\r\n\r\n .helper {\r\n ${bodyM}\r\n color: var(--secondary-color-40);\r\n }\r\n\r\n .error {\r\n ${bodyM}\r\n color: var(--ui-negative);\r\n }\r\n\r\n .required {\r\n color: var(--ui-negative);\r\n }\r\n\r\n .optional {\r\n color: var(--secondary-color-60);\r\n ${bodyXS}\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <label class=\"form-label\">\r\n ${this.label}\r\n ${this.required\r\n ? html`<span class=\"required\">*</span>`\r\n : this.optional\r\n ? html`<span class=\"optional\">opcional</span>`\r\n : nothing}\r\n </label>\r\n\r\n <div class=\"fields\">\r\n <slot></slot>\r\n </div>\r\n\r\n ${this.error\r\n ? html`<span class=\"error\">${this.errorMessage}</span>`\r\n : this.helper\r\n ? html`<span class=\"helper\">${this.helper}</span>`\r\n : null}\r\n `;\r\n }\r\n}\r\n","import { LitElement, css } from 'lit';\r\nimport { property } from 'lit/decorators.js';\r\n\r\nexport class IconComponent extends LitElement {\r\n @property({ type: String }) name = '';\r\n @property({ type: String }) size = '24px';\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n width: var(--icon-size, 24px);\r\n height: var(--icon-size, 24px);\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n svg {\r\n width: var(--icon-size, 24px);\r\n height: var(--icon-size, 24px);\r\n fill: var(--icon-color, currentColor);\r\n }\r\n `;\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.style.setProperty('--icon-size', this.size);\r\n }\r\n\r\n updated(changedProps: Map<string, unknown>) {\r\n if (changedProps.has('size')) {\r\n this.style.setProperty('--icon-size', this.size);\r\n }\r\n }\r\n\r\n async loadIcon() {\r\n try {\r\n const response = await fetch(`/assets/icons/${this.name}.svg`);\r\n if (!response.ok) throw new Error('Icon not found');\r\n const svgText = await response.text();\r\n\r\n const parser = new DOMParser();\r\n const svgDoc = parser.parseFromString(svgText, 'image/svg+xml');\r\n const svgElement = svgDoc.querySelector('svg');\r\n\r\n if (svgElement) {\r\n svgElement.removeAttribute('fill');\r\n svgElement.setAttribute('width', this.size);\r\n svgElement.setAttribute('height', this.size);\r\n svgElement.querySelectorAll('[fill]').forEach(el => el.removeAttribute('fill'));\r\n svgElement.setAttribute('fill', 'currentColor');\r\n if ('innerHTML' in this.renderRoot) {\r\n this.renderRoot.innerHTML = '';\r\n }\r\n this.renderRoot.appendChild(svgElement);\r\n } else {\r\n throw new Error('No se encontró un elemento SVG válido');\r\n }\r\n } catch (error) {\r\n console.error(`❌ Error cargando icono ${this.name}:`, error);\r\n if ('innerHTML' in this.renderRoot) {\r\n this.renderRoot.innerHTML = '<span>⚠️</span>';\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n this.loadIcon();\r\n return null;\r\n }\r\n}\r\n\r\ncustomElements.define('randstad-icon', IconComponent);\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyM } from '../styles/fontStyles';\r\n\r\n@customElement('randstad-notice')\r\nexport class RandstadNotice extends LitElement {\r\n @property({ type: String }) type: string = 'informative';\r\n @property({ type: String }) icon: string = 'info';\r\n @property({ type: String }) message: string = 'Este es un mensaje.';\r\n @property({ type: Boolean }) open: boolean = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: 'Graphik', sans-serif;\r\n }\r\n\r\n .container {\r\n ${bodyM}\r\n display: flex;\r\n align-items: flex-start;\r\n gap: 8px;\r\n border-radius: 8px;\r\n padding: 16px;\r\n color: var(--secondary-color);\r\n }\r\n\r\n .icon {\r\n font-size: 34px;\r\n flex-shrink: 0;\r\n }\r\n\r\n .hidden {\r\n display: none;\r\n }\r\n\r\n .success {\r\n border: 1px solid var(--ui-positive);\r\n background: var(--ui-positive-5);\r\n --icon-color: var(--ui-positive);\r\n }\r\n\r\n .error {\r\n border: 1px solid var(--ui-negative);\r\n background: var(--ui-negative-5);\r\n --icon-color: var(--ui-negative);\r\n }\r\n\r\n .warning {\r\n border: 1px solid var(--ui-warning);\r\n background: var(--ui-warning-10);\r\n --icon-color: var(--ui-warning);\r\n }\r\n \r\n .informative {\r\n border: 1px solid var(--ui-informative);\r\n background: var(--ui-informative-10);\r\n --icon-color: var(--ui-informative);\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"container ${this.open ? '' : 'hidden'} ${this.type}\">\r\n <randstad-icon class=\"icon\" name=\"${this.icon}\" size=\"24px\" style=\"color: var(--icon-color);\"></randstad-icon>\r\n <span class=\"message\">${this.message}</span>\r\n </div>\r\n `;\r\n }\r\n}","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { titleS, bodyM } from '../styles/fontStyles';\r\nimport '../components/Notice';\r\nimport '../components/Button';\r\n\r\n@customElement('custom-modal')\r\nexport class CustomModal extends LitElement {\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n @property({ type: String }) title = 'Título del modal';\r\n @property({ type: String }) subtitle?: string;\r\n @property({ type: Boolean }) showNotice = false;\r\n @property({ type: String }) noticeType: 'success' | 'error' | 'warning' | 'informative' = 'informative';\r\n @property({ type: String }) noticeMessage = '';\r\n @property({ type: String }) noticeIcon = 'info';\r\n\r\n @property({ type: Boolean }) showPrimaryButton = false;\r\n @property({ type: String }) primaryButtonLabel = 'Aceptar';\r\n\r\n @property({ type: Boolean }) showSecondaryButton = false;\r\n @property({ type: String }) secondaryButtonLabel = 'Cancelar';\r\n\r\n @state() private scrollable = false;\r\n\r\n static styles = css`\r\n :host {\r\n font-family: 'Graphik', sans-serif;\r\n display: none;\r\n }\r\n\r\n :host([open]) {\r\n display: block;\r\n z-index: 9999;\r\n }\r\n\r\n .overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: rgba(0, 0, 0, 0.5);\r\n overflow-y: auto;\r\n padding: 40px 16px;\r\n z-index: 9999;\r\n display: flex;\r\n justify-content: center;\r\n align-items: flex-start;\r\n }\r\n\r\n .modal {\r\n background: var(--brand-off-white);\r\n width: 100%;\r\n max-width: 500px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 40px;\r\n border-radius: 8px;\r\n }\r\n\r\n .modal.scrollable {\r\n max-height: 90vh;\r\n }\r\n\r\n .modal-body.scrollable {\r\n overflow-y: auto;\r\n flex: 1;\r\n }\r\n\r\n .modal-body {\r\n display: flex;\r\n flex-direction: column;\r\n padding: 24px;\r\n gap: 16px;\r\n }\r\n\r\n .modal-header {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 24px;\r\n border-bottom: 1px solid var(--secondary-color-20);\r\n }\r\n\r\n .modal-header-content {\r\n display: flex;\r\n gap: 32px;\r\n width: 100%;\r\n justify-content: space-between;\r\n align-items: center;\r\n }\r\n\r\n .titles-container {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n flex-grow: 1;\r\n }\r\n\r\n .modal-title {\r\n ${titleS}\r\n margin: 0;\r\n color: var(--secondary-color);\r\n }\r\n\r\n .modal-subtitle {\r\n ${bodyM}\r\n margin: 0;\r\n color: var(--secondary-color-60);\r\n }\r\n\r\n .modal-header randstad-notice {\r\n width: 100%;\r\n }\r\n\r\n .modal-close {\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 0;\r\n }\r\n\r\n .modal-footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n flex-direction: row;\r\n padding: 24px;\r\n gap: 16px;\r\n border-top: 1px solid var(--secondary-color-20);\r\n }\r\n\r\n .modal-footer.one-button randstad-button {\r\n width: 100%;\r\n }\r\n\r\n .modal-footer.two-buttons randstad-button {\r\n width: 50%;\r\n }\r\n\r\n @media (max-width: 940px) {\r\n .modal-footer.two-buttons {\r\n flex-direction: column;\r\n }\r\n\r\n .modal-footer.two-buttons randstad-button {\r\n width: 100%;\r\n }\r\n }\r\n `;\r\n\r\n private closeModal() {\r\n this.dispatchEvent(new CustomEvent('modal-close'));\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.setScrollableMode();\r\n window.addEventListener('resize', this.setScrollableMode);\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n window.removeEventListener('resize', this.setScrollableMode);\r\n }\r\n\r\n private setScrollableMode = () => {\r\n this.scrollable = window.innerWidth > 940;\r\n };\r\n\r\n render() {\r\n return html`\r\n <div class=\"overlay\" role=\"dialog\" aria-modal=\"true\">\r\n <div class=\"modal ${this.scrollable ? 'scrollable' : ''}\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-header-content\">\r\n <div class=\"titles-container\">\r\n <div class=\"modal-title\">${this.title}</div>\r\n ${this.subtitle\r\n ? html`<div class=\"modal-subtitle\">${this.subtitle}</div>`\r\n : nothing}\r\n </div>\r\n <button class=\"modal-close\" @click=${this.closeModal} aria-label=\"Cerrar modal\">\r\n <randstad-icon name=\"close\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>\r\n </button>\r\n </div>\r\n ${this.showNotice\r\n ? html`\r\n <randstad-notice\r\n .open=${true}\r\n .type=${this.noticeType}\r\n .icon=${this.noticeIcon}\r\n .message=${this.noticeMessage}\r\n ></randstad-notice>\r\n `\r\n : nothing}\r\n </div>\r\n <div class=\"modal-body ${this.scrollable ? 'scrollable' : ''}\">\r\n <slot name=\"content\"></slot>\r\n </div>\r\n <div class=\"modal-footer ${this.showPrimaryButton && this.showSecondaryButton ? 'two-buttons' : 'one-button'}\">\r\n ${this.showPrimaryButton\r\n ? html`\r\n <randstad-button\r\n variant=\"button-primary\"\r\n size=\"md\"\r\n @click=${() => this.dispatchEvent(new CustomEvent('primary-click'))}\r\n label=${this.primaryButtonLabel}\r\n ></randstad-button>\r\n `\r\n : nothing}\r\n ${this.showSecondaryButton\r\n ? html`\r\n <randstad-button\r\n variant=\"button-secondary\"\r\n size=\"md\"\r\n @click=${() => this.dispatchEvent(new CustomEvent('secondary-click'))}\r\n label=${this.secondaryButtonLabel}\r\n ></randstad-button>\r\n `\r\n : nothing}\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { titleXS, bodyM, titleXXS } from '../styles/fontStyles';\r\nimport '../components/Button';\r\nimport '../components/Icon';\r\n\r\ninterface PopupAction {\r\n icon: string;\r\n label: string;\r\n value: string;\r\n}\r\n\r\n@customElement('custom-popup')\r\nexport class CustomPopup extends LitElement {\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n @property({ type: String }) type: 'default' | 'stacked' | 'other' = 'default';\r\n @property({ type: String }) icon = 'warning';\r\n @property({ type: String }) title = 'Título del Popup';\r\n @property({ type: String }) description = 'Descripción del popup';\r\n @property({ type: String }) width = '400px';\r\n @property({ type: String }) buttonText = 'Aceptar';\r\n @property({ type: String }) confirmText = 'Sí';\r\n @property({ type: String }) cancelText = 'No';\r\n @property({ type: Array }) stackedActions: PopupAction[] = [];\r\n\r\n\r\n static styles = css`\r\n :host {\r\n display: none;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n justify-content: center;\r\n align-items: center;\r\n font-family: \"Graphik\", sans-serif;\r\n }\r\n\r\n :host([open]) {\r\n display: flex;\r\n }\r\n\r\n @media (max-width:500px){\r\n .popup {\r\n width: 100%;\r\n margin: 0px 25px;\r\n }\r\n }\r\n @media (min-width:501px){\r\n .popup {\r\n width: var(--popup-width, 358px);\r\n }\r\n }\r\n\r\n .popup {\r\n background: var(--white);\r\n padding: 24px;\r\n border-radius: 16px;\r\n text-align: center;\r\n animation: fadeIn 0.2s ease-in-out;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n align-items: center;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from { opacity: 0; transform: scale(0.9); }\r\n to { opacity: 1; transform: scale(1); }\r\n }\r\n\r\n .popup-content {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n width: 100%;\r\n }\r\n\r\n .titles-container {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n align-items: center; \r\n }\r\n\r\n .popup-title {\r\n ${titleXS}\r\n margin: 0;\r\n color: var(--secondary-color-80);\r\n }\r\n\r\n .popup-description {\r\n ${bodyM}\r\n margin: 0;\r\n color: var(--secondary-color-60);\r\n }\r\n\r\n .buttons-container {\r\n margin-top: 12px;\r\n display: flex;\r\n gap: 10px;\r\n }\r\n\r\n .buttons-container ::slotted(randstad-button),\r\n .buttons-container randstad-button {\r\n flex: 1 1 50%;\r\n }\r\n\r\n :host([type=\"stacked\"]) .buttons-container {\r\n flex-direction: column;\r\n gap: 12px;\r\n }\r\n\r\n .popup-actions {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n }\r\n\r\n .action-item {\r\n ${titleXXS};\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n cursor: pointer;\r\n color: var(--secondary-color);\r\n padding: 16px;\r\n border-radius: 8px;\r\n transition: background 0.2s;\r\n }\r\n\r\n .action-item:hover {\r\n background: var(--secondary-color-10, #f0f4ff);\r\n }\r\n\r\n .icon-circle {\r\n width: 32px;\r\n height: 32px;\r\n background: var(--primary-color-20, #D3E3F7);\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n `;\r\n\r\n firstUpdated() {\r\n if (this.open) {\r\n const button = this.renderRoot.querySelector('randstad-button');\r\n if (button) (button as HTMLElement).focus();\r\n }\r\n this.addEventListener('click', this._onBackgroundClick);\r\n }\r\n\r\n private _onBackgroundClick = (event: MouseEvent) => {\r\n const path = event.composedPath();\r\n const popupContainer = this.renderRoot.querySelector('.popup');\r\n\r\n if (popupContainer && !path.includes(popupContainer)) {\r\n this.dispatchEvent(new CustomEvent('popup-close', { detail: null }));\r\n this.open = false;\r\n }\r\n };\r\n\r\n disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this.removeEventListener('click', this._onBackgroundClick);\r\n }\r\n\r\n closePopup(response: boolean | string) {\r\n this.dispatchEvent(new CustomEvent('popup-close', { detail: response }));\r\n this.open = false;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"popup\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n ${this.type !== 'default' ? html`aria-labelledby=\"popup-title\"` : nothing}\r\n aria-describedby=\"popup-description\"\r\n >\r\n ${this.type !== 'stacked' && this.icon\r\n ? html`<img src=\"/assets/icons/${this.icon}\" alt=\"\" width=\"56\" height=\"56\" />`\r\n : nothing}\r\n\r\n <div class=\"popup-content\">\r\n ${this.type === 'default'\r\n ? html`\r\n <div class=\"titles-container\">\r\n <p id=\"popup-description\" class=\"popup-description\">${this.description}</p>\r\n </div>\r\n <div class=\"buttons-container\">\r\n <randstad-button\r\n variant=\"button-primary\"\r\n size=\"md\"\r\n @click=${() => this.closePopup(true)}\r\n label=${this.buttonText}\r\n ></randstad-button>\r\n </div>\r\n `\r\n : this.type === 'stacked'\r\n ? html`\r\n <div class=\"popup-actions\">\r\n ${this.stackedActions.map(\r\n action => html`\r\n <div\r\n class=\"action-item\"\r\n @click=${() => this.closePopup(action.value)}\r\n >\r\n <div class=\"icon-circle\">\r\n <randstad-icon\r\n name=${action.icon}\r\n size=\"24px\"\r\n style=\"--icon-color: var(--primary-color);\"\r\n ></randstad-icon>\r\n </div>\r\n <span>${action.label}</span>\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `\r\n : html`\r\n <div class=\"titles-container\">\r\n <h2 id=\"popup-title\" class=\"popup-title\">${this.title}</h2>\r\n <p id=\"popup-description\" class=\"popup-description\">${this.description}</p>\r\n </div>\r\n <div class=\"buttons-container\">\r\n <randstad-button\r\n variant=\"button-secondary\"\r\n size=\"md\"\r\n @click=${() => this.closePopup(false)}\r\n label=${this.cancelText}\r\n ></randstad-button>\r\n <randstad-button\r\n variant=\"button-primary\"\r\n size=\"md\"\r\n @click=${() => this.closePopup(true)}\r\n label=${this.confirmText}\r\n ></randstad-button>\r\n </div>\r\n `}\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n}","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { bodyXS } from '../styles/fontStyles';\r\n\r\n@customElement('progress-circle')\r\nexport class ProgressCircle extends LitElement {\r\n @property({ type: Number }) value = 0;\r\n @property({ type: Number }) max = 5;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n width: 64px;\r\n height: 64px;\r\n }\r\n\r\n svg {\r\n width: 64px;\r\n height: 64px;\r\n }\r\n\r\n .circle-text {\r\n ${bodyXS};\r\n text-align: center;\r\n vertical-align: middle;\r\n fill: var(--randstad-dark-blue-40);\r\n text-anchor: middle;\r\n dominant-baseline: middle;\r\n }\r\n\r\n circle.bg {\r\n stroke: var(--primary-light-blue-20);\r\n }\r\n\r\n circle.fg {\r\n stroke: var(--primary-light-blue);\r\n stroke-linecap: round;\r\n }\r\n `;\r\n\r\n render() {\r\n const strokeWidth = 6;\r\n const radius = 28; // 64/2 - strokeWidth\r\n const circumference = 2 * Math.PI * radius;\r\n\r\n const safeMax = Math.max(this.max, 1);\r\n const progress = Math.min(this.value / safeMax, 1);\r\n const offset = circumference * (1 - progress);\r\n\r\n return html`\r\n <svg\r\n viewBox=\"0 0 64 64\"\r\n role=\"img\"\r\n aria-label=\"Progreso: ${this.value} de ${this.max}\"\r\n >\r\n <!-- Fondo -->\r\n <circle\r\n class=\"bg\"\r\n cx=\"32\"\r\n cy=\"32\"\r\n r=\"${radius}\"\r\n stroke-width=\"${strokeWidth}\"\r\n fill=\"none\"\r\n />\r\n <!-- Progreso -->\r\n <circle\r\n class=\"fg\"\r\n cx=\"32\"\r\n cy=\"32\"\r\n r=\"${radius}\"\r\n stroke-width=\"${strokeWidth}\"\r\n fill=\"none\"\r\n stroke-dasharray=\"${circumference}\"\r\n stroke-dashoffset=\"${offset}\"\r\n transform=\"rotate(-90 32 32)\"\r\n />\r\n <!-- Texto -->\r\n <text x=\"32\" y=\"34\" class=\"circle-text\">\r\n ${this.value} de ${this.max}\r\n </text>\r\n </svg>\r\n `;\r\n }\r\n}\r\n","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { isServer } from 'lit';\n/**\n * A key to retrieve an `Attachable` element's `AttachableController` from a\n * global `MutationObserver`.\n */\nconst ATTACHABLE_CONTROLLER = Symbol('attachableController');\nlet FOR_ATTRIBUTE_OBSERVER;\nif (!isServer) {\n /**\n * A global `MutationObserver` that reacts to `for` attribute changes on\n * `Attachable` elements. If the `for` attribute changes, the controller will\n * re-attach to the new referenced element.\n */\n FOR_ATTRIBUTE_OBSERVER = new MutationObserver((records) => {\n for (const record of records) {\n // When a control's `for` attribute changes, inform its\n // `AttachableController` to update to a new control.\n record.target[ATTACHABLE_CONTROLLER]?.hostConnected();\n }\n });\n}\n/**\n * A controller that provides an implementation for `Attachable` elements.\n *\n * @example\n * ```ts\n * class MyElement extends LitElement implements Attachable {\n * get control() { return this.attachableController.control; }\n *\n * private readonly attachableController = new AttachableController(\n * this,\n * (previousControl, newControl) => {\n * previousControl?.removeEventListener('click', this.handleClick);\n * newControl?.addEventListener('click', this.handleClick);\n * }\n * );\n *\n * // Implement remaining `Attachable` properties/methods that call the\n * // controller's properties/methods.\n * }\n * ```\n */\nexport class AttachableController {\n get htmlFor() {\n return this.host.getAttribute('for');\n }\n set htmlFor(htmlFor) {\n if (htmlFor === null) {\n this.host.removeAttribute('for');\n }\n else {\n this.host.setAttribute('for', htmlFor);\n }\n }\n get control() {\n if (this.host.hasAttribute('for')) {\n if (!this.htmlFor || !this.host.isConnected) {\n return null;\n }\n return this.host.getRootNode().querySelector(`#${this.htmlFor}`);\n }\n return this.currentControl || this.host.parentElement;\n }\n set control(control) {\n if (control) {\n this.attach(control);\n }\n else {\n this.detach();\n }\n }\n /**\n * Creates a new controller for an `Attachable` element.\n *\n * @param host The `Attachable` element.\n * @param onControlChange A callback with two parameters for the previous and\n * next control. An `Attachable` element may perform setup or teardown\n * logic whenever the control changes.\n */\n constructor(host, onControlChange) {\n this.host = host;\n this.onControlChange = onControlChange;\n this.currentControl = null;\n host.addController(this);\n host[ATTACHABLE_CONTROLLER] = this;\n FOR_ATTRIBUTE_OBSERVER?.observe(host, { attributeFilter: ['for'] });\n }\n attach(control) {\n if (control === this.currentControl) {\n return;\n }\n this.setCurrentControl(control);\n // When imperatively attaching, remove the `for` attribute so\n // that the attached control is used instead of a referenced one.\n this.host.removeAttribute('for');\n }\n detach() {\n this.setCurrentControl(null);\n // When imperatively detaching, add an empty `for=\"\"` attribute. This will\n // ensure the control is `null` rather than the `parentElement`.\n this.host.setAttribute('for', '');\n }\n /** @private */\n hostConnected() {\n this.setCurrentControl(this.control);\n }\n /** @private */\n hostDisconnected() {\n this.setCurrentControl(null);\n }\n setCurrentControl(control) {\n this.onControlChange(this.currentControl, control);\n this.currentControl = control;\n }\n}\n//# sourceMappingURL=attachable-controller.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { isServer, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { AttachableController, } from '../../internal/controller/attachable-controller.js';\n/**\n * Events that the focus ring listens to.\n */\nconst EVENTS = ['focusin', 'focusout', 'pointerdown'];\n/**\n * A focus ring component.\n *\n * @fires visibility-changed {Event} Fired whenever `visible` changes.\n */\nexport class FocusRing extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Makes the focus ring visible.\n */\n this.visible = false;\n /**\n * Makes the focus ring animate inwards instead of outwards.\n */\n this.inward = false;\n this.attachableController = new AttachableController(this, this.onControlChange.bind(this));\n }\n get htmlFor() {\n return this.attachableController.htmlFor;\n }\n set htmlFor(htmlFor) {\n this.attachableController.htmlFor = htmlFor;\n }\n get control() {\n return this.attachableController.control;\n }\n set control(control) {\n this.attachableController.control = control;\n }\n attach(control) {\n this.attachableController.attach(control);\n }\n detach() {\n this.attachableController.detach();\n }\n connectedCallback() {\n super.connectedCallback();\n // Needed for VoiceOver, which will create a \"group\" if the element is a\n // sibling to other content.\n this.setAttribute('aria-hidden', 'true');\n }\n /** @private */\n handleEvent(event) {\n if (event[HANDLED_BY_FOCUS_RING]) {\n // This ensures the focus ring does not activate when multiple focus rings\n // are used within a single component.\n return;\n }\n switch (event.type) {\n default:\n return;\n case 'focusin':\n this.visible = this.control?.matches(':focus-visible') ?? false;\n break;\n case 'focusout':\n case 'pointerdown':\n this.visible = false;\n break;\n }\n event[HANDLED_BY_FOCUS_RING] = true;\n }\n onControlChange(prev, next) {\n if (isServer)\n return;\n for (const event of EVENTS) {\n prev?.removeEventListener(event, this);\n next?.addEventListener(event, this);\n }\n }\n update(changed) {\n if (changed.has('visible')) {\n // This logic can be removed once the `:has` selector has been introduced\n // to Firefox. This is necessary to allow correct submenu styles.\n this.dispatchEvent(new Event('visibility-changed'));\n }\n super.update(changed);\n }\n}\n__decorate([\n property({ type: Boolean, reflect: true })\n], FocusRing.prototype, \"visible\", void 0);\n__decorate([\n property({ type: Boolean, reflect: true })\n], FocusRing.prototype, \"inward\", void 0);\nconst HANDLED_BY_FOCUS_RING = Symbol('handledByFocusRing');\n//# sourceMappingURL=focus-ring.js.map","/**\n * @license\n * Copyright 2024 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n// Generated stylesheet for ./focus/internal/focus-ring-styles.css.\nimport { css } from 'lit';\nexport const styles = css `:host{animation-delay:0s,calc(var(--md-focus-ring-duration, 600ms)*.25);animation-duration:calc(var(--md-focus-ring-duration, 600ms)*.25),calc(var(--md-focus-ring-duration, 600ms)*.75);animation-timing-function:cubic-bezier(0.2, 0, 0, 1);box-sizing:border-box;color:var(--md-focus-ring-color, var(--md-sys-color-secondary, #625b71));display:none;pointer-events:none;position:absolute}:host([visible]){display:flex}:host(:not([inward])){animation-name:outward-grow,outward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));inset:calc(-1*var(--md-focus-ring-outward-offset, 2px));outline:var(--md-focus-ring-width, 3px) solid currentColor}:host([inward]){animation-name:inward-grow,inward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border:var(--md-focus-ring-width, 3px) solid currentColor;inset:var(--md-focus-ring-inward-offset, 0px)}@keyframes outward-grow{from{outline-width:0}to{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes outward-shrink{from{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-grow{from{border-width:0}to{border-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-shrink{from{border-width:var(--md-focus-ring-active-width, 8px)}}@media(prefers-reduced-motion){:host{animation:none}}\n`;\n//# sourceMappingURL=focus-ring-styles.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { FocusRing } from './internal/focus-ring.js';\nimport { styles } from './internal/focus-ring-styles.js';\n/**\n * TODO(b/267336424): add docs\n *\n * @final\n * @suppress {visibility}\n */\nlet MdFocusRing = class MdFocusRing extends FocusRing {\n};\nMdFocusRing.styles = [styles];\nMdFocusRing = __decorate([\n customElement('md-focus-ring')\n], MdFocusRing);\nexport { MdFocusRing };\n//# sourceMappingURL=md-focus-ring.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * Easing functions to use for web animations.\n *\n * **NOTE:** `EASING.EMPHASIZED` is approximated with unknown accuracy.\n *\n * TODO(b/241113345): replace with tokens\n */\nexport const EASING = {\n STANDARD: 'cubic-bezier(0.2, 0, 0, 1)',\n STANDARD_ACCELERATE: 'cubic-bezier(.3,0,1,1)',\n STANDARD_DECELERATE: 'cubic-bezier(0,0,0,1)',\n EMPHASIZED: 'cubic-bezier(.3,0,0,1)',\n EMPHASIZED_ACCELERATE: 'cubic-bezier(.3,0,.8,.15)',\n EMPHASIZED_DECELERATE: 'cubic-bezier(.05,.7,.1,1)',\n};\n/**\n * Creates an `AnimationSignal` that can be used to cancel a previous task.\n *\n * @example\n * class MyClass {\n * private labelAnimationSignal = createAnimationSignal();\n *\n * private async animateLabel() {\n * // Start of the task. Previous tasks will be canceled.\n * const signal = this.labelAnimationSignal.start();\n *\n * // Do async work...\n * if (signal.aborted) {\n * // Use AbortSignal to check if a request was made to abort after some\n * // asynchronous work.\n * return;\n * }\n *\n * const animation = this.animate(...);\n * // Add event listeners to be notified when the task should be canceled.\n * signal.addEventListener('abort', () => {\n * animation.cancel();\n * });\n *\n * animation.addEventListener('finish', () => {\n * // Tell the signal that the current task is finished.\n * this.labelAnimationSignal.finish();\n * });\n * }\n * }\n *\n * @return An `AnimationSignal`.\n */\nexport function createAnimationSignal() {\n // The current animation's AbortController\n let animationAbortController = null;\n return {\n start() {\n // Tell the previous animation to cancel.\n animationAbortController?.abort();\n // Set up a new AbortController for the current animation.\n animationAbortController = new AbortController();\n // Provide the AbortSignal so that the caller can check aborted status\n // and add listeners.\n return animationAbortController.signal;\n },\n finish() {\n animationAbortController = null;\n },\n };\n}\n/**\n * Returns a function which can be used to throttle function calls\n * mapped to a key via a given function that should produce a promise that\n * determines the throttle amount (defaults to requestAnimationFrame).\n */\nexport function createThrottle() {\n const stack = new Set();\n return async (key = '', cb, timeout = async () => {\n await new Promise(requestAnimationFrame);\n }) => {\n if (!stack.has(key)) {\n stack.add(key);\n await timeout();\n if (stack.has(key)) {\n stack.delete(key);\n cb();\n }\n }\n };\n}\n/**\n * Parses an number in milliseconds from a css time value\n */\nexport function msFromTimeCSSValue(value) {\n const match = value.trim().match(/([\\d.]+)(\\s*s$)?/);\n const time = match?.[1];\n const seconds = match?.[2];\n return Number(time ?? 0) * (seconds ? 1000 : 1);\n}\n//# sourceMappingURL=animation.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { html, isServer, LitElement } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { AttachableController, } from '../../internal/controller/attachable-controller.js';\nimport { EASING } from '../../internal/motion/animation.js';\nconst PRESS_GROW_MS = 450;\nconst MINIMUM_PRESS_MS = 225;\nconst INITIAL_ORIGIN_SCALE = 0.2;\nconst PADDING = 10;\nconst SOFT_EDGE_MINIMUM_SIZE = 75;\nconst SOFT_EDGE_CONTAINER_RATIO = 0.35;\nconst PRESS_PSEUDO = '::after';\nconst ANIMATION_FILL = 'forwards';\n/**\n * Interaction states for the ripple.\n *\n * On Touch:\n * - `INACTIVE -> TOUCH_DELAY -> WAITING_FOR_CLICK -> INACTIVE`\n * - `INACTIVE -> TOUCH_DELAY -> HOLDING -> WAITING_FOR_CLICK -> INACTIVE`\n *\n * On Mouse or Pen:\n * - `INACTIVE -> WAITING_FOR_CLICK -> INACTIVE`\n */\nvar State;\n(function (State) {\n /**\n * Initial state of the control, no touch in progress.\n *\n * Transitions:\n * - on touch down: transition to `TOUCH_DELAY`.\n * - on mouse down: transition to `WAITING_FOR_CLICK`.\n */\n State[State[\"INACTIVE\"] = 0] = \"INACTIVE\";\n /**\n * Touch down has been received, waiting to determine if it's a swipe or\n * scroll.\n *\n * Transitions:\n * - on touch up: begin press; transition to `WAITING_FOR_CLICK`.\n * - on cancel: transition to `INACTIVE`.\n * - after `TOUCH_DELAY_MS`: begin press; transition to `HOLDING`.\n */\n State[State[\"TOUCH_DELAY\"] = 1] = \"TOUCH_DELAY\";\n /**\n * A touch has been deemed to be a press\n *\n * Transitions:\n * - on up: transition to `WAITING_FOR_CLICK`.\n */\n State[State[\"HOLDING\"] = 2] = \"HOLDING\";\n /**\n * The user touch has finished, transition into rest state.\n *\n * Transitions:\n * - on click end press; transition to `INACTIVE`.\n */\n State[State[\"WAITING_FOR_CLICK\"] = 3] = \"WAITING_FOR_CLICK\";\n})(State || (State = {}));\n/**\n * Events that the ripple listens to.\n */\nconst EVENTS = [\n 'click',\n 'contextmenu',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerup',\n];\n/**\n * Delay reacting to touch so that we do not show the ripple for a swipe or\n * scroll interaction.\n */\nconst TOUCH_DELAY_MS = 150;\n/**\n * Used to detect if HCM is active. Events do not process during HCM when the\n * ripple is not displayed.\n */\nconst FORCED_COLORS = isServer\n ? null\n : window.matchMedia('(forced-colors: active)');\n/**\n * A ripple component.\n */\nexport class Ripple extends LitElement {\n constructor() {\n super(...arguments);\n /**\n * Disables the ripple.\n */\n this.disabled = false;\n this.hovered = false;\n this.pressed = false;\n this.rippleSize = '';\n this.rippleScale = '';\n this.initialSize = 0;\n this.state = State.INACTIVE;\n this.checkBoundsAfterContextMenu = false;\n this.attachableController = new AttachableController(this, this.onControlChange.bind(this));\n }\n get htmlFor() {\n return this.attachableController.htmlFor;\n }\n set htmlFor(htmlFor) {\n this.attachableController.htmlFor = htmlFor;\n }\n get control() {\n return this.attachableController.control;\n }\n set control(control) {\n this.attachableController.control = control;\n }\n attach(control) {\n this.attachableController.attach(control);\n }\n detach() {\n this.attachableController.detach();\n }\n connectedCallback() {\n super.connectedCallback();\n // Needed for VoiceOver, which will create a \"group\" if the element is a\n // sibling to other content.\n this.setAttribute('aria-hidden', 'true');\n }\n render() {\n const classes = {\n 'hovered': this.hovered,\n 'pressed': this.pressed,\n };\n return html `<div class=\"surface ${classMap(classes)}\"></div>`;\n }\n update(changedProps) {\n if (changedProps.has('disabled') && this.disabled) {\n this.hovered = false;\n this.pressed = false;\n }\n super.update(changedProps);\n }\n /**\n * TODO(b/269799771): make private\n * @private only public for slider\n */\n handlePointerenter(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n this.hovered = true;\n }\n /**\n * TODO(b/269799771): make private\n * @private only public for slider\n */\n handlePointerleave(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n this.hovered = false;\n // release a held mouse or pen press that moves outside the element\n if (this.state !== State.INACTIVE) {\n this.endPressAnimation();\n }\n }\n handlePointerup(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n if (this.state === State.HOLDING) {\n this.state = State.WAITING_FOR_CLICK;\n return;\n }\n if (this.state === State.TOUCH_DELAY) {\n this.state = State.WAITING_FOR_CLICK;\n this.startPressAnimation(this.rippleStartEvent);\n return;\n }\n }\n async handlePointerdown(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n this.rippleStartEvent = event;\n if (!this.isTouch(event)) {\n this.state = State.WAITING_FOR_CLICK;\n this.startPressAnimation(event);\n return;\n }\n // after a longpress contextmenu event, an extra `pointerdown` can be\n // dispatched to the pressed element. Check that the down is within\n // bounds of the element in this case.\n if (this.checkBoundsAfterContextMenu && !this.inBounds(event)) {\n return;\n }\n this.checkBoundsAfterContextMenu = false;\n // Wait for a hold after touch delay\n this.state = State.TOUCH_DELAY;\n await new Promise((resolve) => {\n setTimeout(resolve, TOUCH_DELAY_MS);\n });\n if (this.state !== State.TOUCH_DELAY) {\n return;\n }\n this.state = State.HOLDING;\n this.startPressAnimation(event);\n }\n handleClick() {\n // Click is a MouseEvent in Firefox and Safari, so we cannot use\n // `shouldReactToEvent`\n if (this.disabled) {\n return;\n }\n if (this.state === State.WAITING_FOR_CLICK) {\n this.endPressAnimation();\n return;\n }\n if (this.state === State.INACTIVE) {\n // keyboard synthesized click event\n this.startPressAnimation();\n this.endPressAnimation();\n }\n }\n handlePointercancel(event) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n this.endPressAnimation();\n }\n handleContextmenu() {\n if (this.disabled) {\n return;\n }\n this.checkBoundsAfterContextMenu = true;\n this.endPressAnimation();\n }\n determineRippleSize() {\n const { height, width } = this.getBoundingClientRect();\n const maxDim = Math.max(height, width);\n const softEdgeSize = Math.max(SOFT_EDGE_CONTAINER_RATIO * maxDim, SOFT_EDGE_MINIMUM_SIZE);\n const initialSize = Math.floor(maxDim * INITIAL_ORIGIN_SCALE);\n const hypotenuse = Math.sqrt(width ** 2 + height ** 2);\n const maxRadius = hypotenuse + PADDING;\n this.initialSize = initialSize;\n this.rippleScale = `${(maxRadius + softEdgeSize) / initialSize}`;\n this.rippleSize = `${initialSize}px`;\n }\n getNormalizedPointerEventCoords(pointerEvent) {\n const { scrollX, scrollY } = window;\n const { left, top } = this.getBoundingClientRect();\n const documentX = scrollX + left;\n const documentY = scrollY + top;\n const { pageX, pageY } = pointerEvent;\n return { x: pageX - documentX, y: pageY - documentY };\n }\n getTranslationCoordinates(positionEvent) {\n const { height, width } = this.getBoundingClientRect();\n // end in the center\n const endPoint = {\n x: (width - this.initialSize) / 2,\n y: (height - this.initialSize) / 2,\n };\n let startPoint;\n if (positionEvent instanceof PointerEvent) {\n startPoint = this.getNormalizedPointerEventCoords(positionEvent);\n }\n else {\n startPoint = {\n x: width / 2,\n y: height / 2,\n };\n }\n // center around start point\n startPoint = {\n x: startPoint.x - this.initialSize / 2,\n y: startPoint.y - this.initialSize / 2,\n };\n return { startPoint, endPoint };\n }\n startPressAnimation(positionEvent) {\n if (!this.mdRoot) {\n return;\n }\n this.pressed = true;\n this.growAnimation?.cancel();\n this.determineRippleSize();\n const { startPoint, endPoint } = this.getTranslationCoordinates(positionEvent);\n const translateStart = `${startPoint.x}px, ${startPoint.y}px`;\n const translateEnd = `${endPoint.x}px, ${endPoint.y}px`;\n this.growAnimation = this.mdRoot.animate({\n top: [0, 0],\n left: [0, 0],\n height: [this.rippleSize, this.rippleSize],\n width: [this.rippleSize, this.rippleSize],\n transform: [\n `translate(${translateStart}) scale(1)`,\n `translate(${translateEnd}) scale(${this.rippleScale})`,\n ],\n }, {\n pseudoElement: PRESS_PSEUDO,\n duration: PRESS_GROW_MS,\n easing: EASING.STANDARD,\n fill: ANIMATION_FILL,\n });\n }\n async endPressAnimation() {\n this.rippleStartEvent = undefined;\n this.state = State.INACTIVE;\n const animation = this.growAnimation;\n let pressAnimationPlayState = Infinity;\n if (typeof animation?.currentTime === 'number') {\n pressAnimationPlayState = animation.currentTime;\n }\n else if (animation?.currentTime) {\n pressAnimationPlayState = animation.currentTime.to('ms').value;\n }\n if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {\n this.pressed = false;\n return;\n }\n await new Promise((resolve) => {\n setTimeout(resolve, MINIMUM_PRESS_MS - pressAnimationPlayState);\n });\n if (this.growAnimation !== animation) {\n // A new press animation was started. The old animation was canceled and\n // should not finish the pressed state.\n return;\n }\n this.pressed = false;\n }\n /**\n * Returns `true` if\n * - the ripple element is enabled\n * - the pointer is primary for the input type\n * - the pointer is the pointer that started the interaction, or will start\n * the interaction\n * - the pointer is a touch, or the pointer state has the primary button\n * held, or the pointer is hovering\n */\n shouldReactToEvent(event) {\n if (this.disabled || !event.isPrimary) {\n return false;\n }\n if (this.rippleStartEvent &&\n this.rippleStartEvent.pointerId !== event.pointerId) {\n return false;\n }\n if (event.type === 'pointerenter' || event.type === 'pointerleave') {\n return !this.isTouch(event);\n }\n const isPrimaryButton = event.buttons === 1;\n return this.isTouch(event) || isPrimaryButton;\n }\n /**\n * Check if the event is within the bounds of the element.\n *\n * This is only needed for the \"stuck\" contextmenu longpress on Chrome.\n */\n inBounds({ x, y }) {\n const { top, left, bottom, right } = this.getBoundingClientRect();\n return x >= left && x <= right && y >= top && y <= bottom;\n }\n isTouch({ pointerType }) {\n return pointerType === 'touch';\n }\n /** @private */\n async handleEvent(event) {\n if (FORCED_COLORS?.matches) {\n // Skip event logic since the ripple is `display: none`.\n return;\n }\n switch (event.type) {\n case 'click':\n this.handleClick();\n break;\n case 'contextmenu':\n this.handleContextmenu();\n break;\n case 'pointercancel':\n this.handlePointercancel(event);\n break;\n case 'pointerdown':\n await this.handlePointerdown(event);\n break;\n case 'pointerenter':\n this.handlePointerenter(event);\n break;\n case 'pointerleave':\n this.handlePointerleave(event);\n break;\n case 'pointerup':\n this.handlePointerup(event);\n break;\n default:\n break;\n }\n }\n onControlChange(prev, next) {\n if (isServer)\n return;\n for (const event of EVENTS) {\n prev?.removeEventListener(event, this);\n next?.addEventListener(event, this);\n }\n }\n}\n__decorate([\n property({ type: Boolean, reflect: true })\n], Ripple.prototype, \"disabled\", void 0);\n__decorate([\n state()\n], Ripple.prototype, \"hovered\", void 0);\n__decorate([\n state()\n], Ripple.prototype, \"pressed\", void 0);\n__decorate([\n query('.surface')\n], Ripple.prototype, \"mdRoot\", void 0);\n//# sourceMappingURL=ripple.js.map","/**\n * @license\n * Copyright 2024 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n// Generated stylesheet for ./ripple/internal/ripple-styles.css.\nimport { css } from 'lit';\nexport const styles = css `:host{display:flex;margin:auto;pointer-events:none}:host([disabled]){display:none}@media(forced-colors: active){:host{display:none}}:host,.surface{border-radius:inherit;position:absolute;inset:0;overflow:hidden}.surface{-webkit-tap-highlight-color:rgba(0,0,0,0)}.surface::before,.surface::after{content:\"\";opacity:0;position:absolute}.surface::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));inset:0;transition:opacity 15ms linear,background-color 15ms linear}.surface::after{background:radial-gradient(closest-side, var(--md-ripple-pressed-color, var(--md-sys-color-on-surface, #1d1b20)) max(100% - 70px, 65%), transparent 100%);transform-origin:center center;transition:opacity 375ms linear}.hovered::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-ripple-hover-opacity, 0.08)}.pressed::after{opacity:var(--md-ripple-pressed-opacity, 0.12);transition-duration:105ms}\n`;\n//# sourceMappingURL=ripple-styles.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { Ripple } from './internal/ripple.js';\nimport { styles } from './internal/ripple-styles.js';\n/**\n * @summary Ripples, also known as state layers, are visual indicators used to\n * communicate the status of a component or interactive element.\n *\n * @description A state layer is a semi-transparent covering on an element that\n * indicates its state. State layers provide a systematic approach to\n * visualizing states by using opacity. A layer can be applied to an entire\n * element or in a circular shape and only one state layer can be applied at a\n * given time.\n *\n * @final\n * @suppress {visibility}\n */\nlet MdRipple = class MdRipple extends Ripple {\n};\nMdRipple.styles = [styles];\nMdRipple = __decorate([\n customElement('md-ripple')\n], MdRipple);\nexport { MdRipple };\n//# sourceMappingURL=ripple.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * Dispatches a click event to the given element that triggers a native action,\n * but is not composed and therefore is not seen outside the element.\n *\n * This is useful for responding to an external click event on the host element\n * that should trigger an internal action like a button click.\n *\n * Note, a helper is provided because setting this up correctly is a bit tricky.\n * In particular, calling `click` on an element creates a composed event, which\n * is not desirable, and a manually dispatched event must specifically be a\n * `MouseEvent` to trigger a native action.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function dispatchActivationClick(element) {\n const event = new MouseEvent('click', { bubbles: true });\n element.dispatchEvent(event);\n return event;\n}\n/**\n * Returns true if the click event should trigger an activation behavior. The\n * behavior is defined by the element and is whatever it should do when\n * clicked.\n *\n * Typically when an element needs to handle a click, the click is generated\n * from within the element and an event listener within the element implements\n * the needed behavior; however, it's possible to fire a click directly\n * at the element that the element should handle. This method helps\n * distinguish these \"external\" clicks.\n *\n * An \"external\" click can be triggered in a number of ways: via a click\n * on an associated label for a form associated element, calling\n * `element.click()`, or calling\n * `element.dispatchEvent(new MouseEvent('click', ...))`.\n *\n * Also works around Firefox issue\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1804576 by squelching\n * events for a microtask after called.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function isActivationClick(event) {\n // Event must start at the event target.\n if (event.currentTarget !== event.target) {\n return false;\n }\n // Event must not be retargeted from shadowRoot.\n if (event.composedPath()[0] !== event.target) {\n return false;\n }\n // Target must not be disabled; this should only occur for a synthetically\n // dispatched click.\n if (event.target.disabled) {\n return false;\n }\n // This is an activation if the event should not be squelched.\n return !squelchEvent(event);\n}\n// TODO(https://bugzilla.mozilla.org/show_bug.cgi?id=1804576)\n// Remove when Firefox bug is addressed.\nfunction squelchEvent(event) {\n const squelched = isSquelchingEvents;\n if (squelched) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n squelchEventsForMicrotask();\n return squelched;\n}\n// Ignore events for one microtask only.\nlet isSquelchingEvents = false;\nasync function squelchEventsForMicrotask() {\n isSquelchingEvents = true;\n // Need to pause for just one microtask.\n // tslint:disable-next-line\n await null;\n isSquelchingEvents = false;\n}\n//# sourceMappingURL=form-label-activation.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * A unique symbol used for protected access to an instance's\n * `ElementInternals`.\n *\n * @example\n * ```ts\n * class MyElement extends mixinElementInternals(LitElement) {\n * constructor() {\n * super();\n * this[internals].role = 'button';\n * }\n * }\n * ```\n */\nexport const internals = Symbol('internals');\n// Private symbols\nconst privateInternals = Symbol('privateInternals');\n/**\n * Mixes in an attached `ElementInternals` instance.\n *\n * This mixin is only needed when other shared code needs access to a\n * component's `ElementInternals`, such as form-associated mixins.\n *\n * @param base The class to mix functionality into.\n * @return The provided class with `WithElementInternals` mixed in.\n */\nexport function mixinElementInternals(base) {\n class WithElementInternalsElement extends base {\n get [internals]() {\n // Create internals in getter so that it can be used in methods called on\n // construction in `ReactiveElement`, such as `requestUpdate()`.\n if (!this[privateInternals]) {\n // Cast needed for closure\n this[privateInternals] = this.attachInternals();\n }\n return this[privateInternals];\n }\n }\n return WithElementInternalsElement;\n}\n//# sourceMappingURL=element-internals.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { isServer } from 'lit';\nimport { internals } from './element-internals.js';\n/**\n * A symbol property used to create a constraint validation `Validator`.\n * Required for all `mixinConstraintValidation()` elements.\n */\nexport const createValidator = Symbol('createValidator');\n/**\n * A symbol property used to return an anchor for constraint validation popups.\n * Required for all `mixinConstraintValidation()` elements.\n */\nexport const getValidityAnchor = Symbol('getValidityAnchor');\n// Private symbol members, used to avoid name clashing.\nconst privateValidator = Symbol('privateValidator');\nconst privateSyncValidity = Symbol('privateSyncValidity');\nconst privateCustomValidationMessage = Symbol('privateCustomValidationMessage');\n/**\n * Mixes in constraint validation APIs for an element.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/Constraint_validation\n * for more details.\n *\n * Implementations must provide a validator to cache and compute its validity,\n * along with a shadow root element to anchor validation popups to.\n *\n * @example\n * ```ts\n * const baseClass = mixinConstraintValidation(\n * mixinFormAssociated(mixinElementInternals(LitElement))\n * );\n *\n * class MyCheckbox extends baseClass {\n * \\@property({type: Boolean}) checked = false;\n * \\@property({type: Boolean}) required = false;\n *\n * [createValidator]() {\n * return new CheckboxValidator(() => this);\n * }\n *\n * [getValidityAnchor]() {\n * return this.renderRoot.querySelector('.root');\n * }\n * }\n * ```\n *\n * @param base The class to mix functionality into.\n * @return The provided class with `ConstraintValidation` mixed in.\n */\nexport function mixinConstraintValidation(base) {\n var _a;\n class ConstraintValidationElement extends base {\n constructor() {\n super(...arguments);\n /**\n * Needed for Safari, see https://bugs.webkit.org/show_bug.cgi?id=261432\n * Replace with this[internals].validity.customError when resolved.\n */\n this[_a] = '';\n }\n get validity() {\n this[privateSyncValidity]();\n return this[internals].validity;\n }\n get validationMessage() {\n this[privateSyncValidity]();\n return this[internals].validationMessage;\n }\n get willValidate() {\n this[privateSyncValidity]();\n return this[internals].willValidate;\n }\n checkValidity() {\n this[privateSyncValidity]();\n return this[internals].checkValidity();\n }\n reportValidity() {\n this[privateSyncValidity]();\n return this[internals].reportValidity();\n }\n setCustomValidity(error) {\n this[privateCustomValidationMessage] = error;\n this[privateSyncValidity]();\n }\n requestUpdate(name, oldValue, options) {\n super.requestUpdate(name, oldValue, options);\n this[privateSyncValidity]();\n }\n firstUpdated(changed) {\n super.firstUpdated(changed);\n // Sync the validity again when the element first renders, since the\n // validity anchor is now available.\n //\n // Elements that `delegatesFocus: true` to an `<input>` will throw an\n // error in Chrome and Safari when a form tries to submit or call\n // `form.reportValidity()`:\n // \"An invalid form control with name='' is not focusable\"\n //\n // The validity anchor MUST be provided in `internals.setValidity()` and\n // MUST be the `<input>` element rendered.\n //\n // See https://lit.dev/playground/#gist=6c26e418e0010f7a5aac15005cde8bde\n // for a reproduction.\n this[privateSyncValidity]();\n }\n [(_a = privateCustomValidationMessage, privateSyncValidity)]() {\n if (isServer) {\n return;\n }\n if (!this[privateValidator]) {\n this[privateValidator] = this[createValidator]();\n }\n const { validity, validationMessage: nonCustomValidationMessage } = this[privateValidator].getValidity();\n const customError = !!this[privateCustomValidationMessage];\n const validationMessage = this[privateCustomValidationMessage] || nonCustomValidationMessage;\n this[internals].setValidity({ ...validity, customError }, validationMessage, this[getValidityAnchor]() ?? undefined);\n }\n [createValidator]() {\n throw new Error('Implement [createValidator]');\n }\n [getValidityAnchor]() {\n throw new Error('Implement [getValidityAnchor]');\n }\n }\n return ConstraintValidationElement;\n}\n//# sourceMappingURL=constraint-validation.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\n/**\n * A property symbol that indicates whether or not a `Focusable` element can be\n * focused.\n */\nexport const isFocusable = Symbol('isFocusable');\nconst privateIsFocusable = Symbol('privateIsFocusable');\nconst externalTabIndex = Symbol('externalTabIndex');\nconst isUpdatingTabIndex = Symbol('isUpdatingTabIndex');\nconst updateTabIndex = Symbol('updateTabIndex');\n/**\n * Mixes in focusable functionality for a class.\n *\n * Elements can enable and disable their focusability with the `isFocusable`\n * symbol property. Changing `tabIndex` will trigger a lit render, meaning\n * `this.tabIndex` can be used in template expressions.\n *\n * This mixin will preserve externally-set tabindices. If an element turns off\n * focusability, but a user sets `tabindex=\"0\"`, it will still be focusable.\n *\n * To remove user overrides and restore focusability control to the element,\n * remove the `tabindex` attribute.\n *\n * @param base The class to mix functionality into.\n * @return The provided class with `Focusable` mixed in.\n */\nexport function mixinFocusable(base) {\n var _a, _b, _c;\n class FocusableElement extends base {\n constructor() {\n super(...arguments);\n this[_a] = true;\n this[_b] = null;\n this[_c] = false;\n }\n get [isFocusable]() {\n return this[privateIsFocusable];\n }\n set [isFocusable](value) {\n if (this[isFocusable] === value) {\n return;\n }\n this[privateIsFocusable] = value;\n this[updateTabIndex]();\n }\n connectedCallback() {\n super.connectedCallback();\n this[updateTabIndex]();\n }\n attributeChangedCallback(name, old, value) {\n if (name !== 'tabindex') {\n super.attributeChangedCallback(name, old, value);\n return;\n }\n this.requestUpdate('tabIndex', Number(old ?? -1));\n if (this[isUpdatingTabIndex]) {\n // Not an externally-initiated update.\n return;\n }\n if (!this.hasAttribute('tabindex')) {\n // User removed the attribute, can now use internal tabIndex\n this[externalTabIndex] = null;\n this[updateTabIndex]();\n return;\n }\n this[externalTabIndex] = this.tabIndex;\n }\n [(_a = privateIsFocusable, _b = externalTabIndex, _c = isUpdatingTabIndex, updateTabIndex)]() {\n const internalTabIndex = this[isFocusable] ? 0 : -1;\n const computedTabIndex = this[externalTabIndex] ?? internalTabIndex;\n this[isUpdatingTabIndex] = true;\n this.tabIndex = computedTabIndex;\n this[isUpdatingTabIndex] = false;\n }\n }\n __decorate([\n property({ noAccessor: true })\n ], FocusableElement.prototype, \"tabIndex\", void 0);\n return FocusableElement;\n}\n//# sourceMappingURL=focusable.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { internals } from './element-internals.js';\n/**\n * A symbol property to retrieve the form value for an element.\n */\nexport const getFormValue = Symbol('getFormValue');\n/**\n * A symbol property to retrieve the form state for an element.\n */\nexport const getFormState = Symbol('getFormState');\n/**\n * Mixes in form-associated behavior for a class. This allows an element to add\n * values to `<form>` elements.\n *\n * Implementing classes should provide a `[formValue]` to return the current\n * value of the element, as well as reset and restore callbacks.\n *\n * @example\n * ```ts\n * const base = mixinFormAssociated(mixinElementInternals(LitElement));\n *\n * class MyControl extends base {\n * \\@property()\n * value = '';\n *\n * override [getFormValue]() {\n * return this.value;\n * }\n *\n * override formResetCallback() {\n * const defaultValue = this.getAttribute('value');\n * this.value = defaultValue;\n * }\n *\n * override formStateRestoreCallback(state: string) {\n * this.value = state;\n * }\n * }\n * ```\n *\n * Elements may optionally provide a `[formState]` if their values do not\n * represent the state of the component.\n *\n * @example\n * ```ts\n * const base = mixinFormAssociated(mixinElementInternals(LitElement));\n *\n * class MyCheckbox extends base {\n * \\@property()\n * value = 'on';\n *\n * \\@property({type: Boolean})\n * checked = false;\n *\n * override [getFormValue]() {\n * return this.checked ? this.value : null;\n * }\n *\n * override [getFormState]() {\n * return String(this.checked);\n * }\n *\n * override formResetCallback() {\n * const defaultValue = this.hasAttribute('checked');\n * this.checked = defaultValue;\n * }\n *\n * override formStateRestoreCallback(state: string) {\n * this.checked = Boolean(state);\n * }\n * }\n * ```\n *\n * IMPORTANT: Requires declares for lit-analyzer\n * @example\n * ```ts\n * const base = mixinFormAssociated(mixinElementInternals(LitElement));\n * class MyControl extends base {\n * // Writable mixin properties for lit-html binding, needed for lit-analyzer\n * declare disabled: boolean;\n * declare name: string;\n * }\n * ```\n *\n * @param base The class to mix functionality into. The base class must use\n * `mixinElementInternals()`.\n * @return The provided class with `FormAssociated` mixed in.\n */\nexport function mixinFormAssociated(base) {\n class FormAssociatedElement extends base {\n get form() {\n return this[internals].form;\n }\n get labels() {\n return this[internals].labels;\n }\n // Use @property for the `name` and `disabled` properties to add them to the\n // `observedAttributes` array and trigger `attributeChangedCallback()`.\n //\n // We don't use Lit's default getter/setter (`noAccessor: true`) because\n // the attributes need to be updated synchronously to work with synchronous\n // form APIs, and Lit updates attributes async by default.\n get name() {\n return this.getAttribute('name') ?? '';\n }\n set name(name) {\n // Note: setting name to null or empty does not remove the attribute.\n this.setAttribute('name', name);\n // We don't need to call `requestUpdate()` since it's called synchronously\n // in `attributeChangedCallback()`.\n }\n get disabled() {\n return this.hasAttribute('disabled');\n }\n set disabled(disabled) {\n this.toggleAttribute('disabled', disabled);\n // We don't need to call `requestUpdate()` since it's called synchronously\n // in `attributeChangedCallback()`.\n }\n attributeChangedCallback(name, old, value) {\n // Manually `requestUpdate()` for `name` and `disabled` when their\n // attribute or property changes.\n // The properties update their attributes, so this callback is invoked\n // immediately when the properties are set. We call `requestUpdate()` here\n // instead of letting Lit set the properties from the attribute change.\n // That would cause the properties to re-set the attribute and invoke this\n // callback again in a loop. This leads to stale state when Lit tries to\n // determine if a property changed or not.\n if (name === 'name' || name === 'disabled') {\n // Disabled's value is only false if the attribute is missing and null.\n const oldValue = name === 'disabled' ? old !== null : old;\n // Trigger a lit update when the attribute changes.\n this.requestUpdate(name, oldValue);\n return;\n }\n super.attributeChangedCallback(name, old, value);\n }\n requestUpdate(name, oldValue, options) {\n super.requestUpdate(name, oldValue, options);\n // If any properties change, update the form value, which may have changed\n // as well.\n // Update the form value synchronously in `requestUpdate()` rather than\n // `update()` or `updated()`, which are async. This is necessary to ensure\n // that form data is updated in time for synchronous event listeners.\n this[internals].setFormValue(this[getFormValue](), this[getFormState]());\n }\n [getFormValue]() {\n // Closure does not allow abstract symbol members, so a default\n // implementation is needed.\n throw new Error('Implement [getFormValue]');\n }\n [getFormState]() {\n return this[getFormValue]();\n }\n formDisabledCallback(disabled) {\n this.disabled = disabled;\n }\n }\n /** @nocollapse */\n FormAssociatedElement.formAssociated = true;\n __decorate([\n property({ noAccessor: true })\n ], FormAssociatedElement.prototype, \"name\", null);\n __decorate([\n property({ type: Boolean, noAccessor: true })\n ], FormAssociatedElement.prototype, \"disabled\", null);\n return FormAssociatedElement;\n}\n//# sourceMappingURL=form-associated.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * A class that computes and caches `ValidityStateFlags` for a component with\n * a given `State` interface.\n *\n * Cached performance before computing validity is important since constraint\n * validation must be checked frequently and synchronously when properties\n * change.\n *\n * @template State The expected interface of properties relevant to constraint\n * validation.\n */\nexport class Validator {\n /**\n * Creates a new validator.\n *\n * @param getCurrentState A callback that returns the current state of\n * constraint validation-related properties.\n */\n constructor(getCurrentState) {\n this.getCurrentState = getCurrentState;\n /**\n * The current validity state and message. This is cached and returns if\n * constraint validation state does not change.\n */\n this.currentValidity = {\n validity: {},\n validationMessage: '',\n };\n }\n /**\n * Returns the current `ValidityStateFlags` and validation message for the\n * validator.\n *\n * If the constraint validation state has not changed, this will return a\n * cached result. This is important since `getValidity()` can be called\n * frequently in response to synchronous property changes.\n *\n * @return The current validity and validation message.\n */\n getValidity() {\n const state = this.getCurrentState();\n const hasStateChanged = !this.prevState || !this.equals(this.prevState, state);\n if (!hasStateChanged) {\n return this.currentValidity;\n }\n const { validity, validationMessage } = this.computeValidity(state);\n this.prevState = this.copy(state);\n this.currentValidity = {\n validationMessage,\n validity: {\n // Change any `ValidityState` instances into `ValidityStateFlags` since\n // `ValidityState` cannot be easily `{...spread}`.\n badInput: validity.badInput,\n customError: validity.customError,\n patternMismatch: validity.patternMismatch,\n rangeOverflow: validity.rangeOverflow,\n rangeUnderflow: validity.rangeUnderflow,\n stepMismatch: validity.stepMismatch,\n tooLong: validity.tooLong,\n tooShort: validity.tooShort,\n typeMismatch: validity.typeMismatch,\n valueMissing: validity.valueMissing,\n },\n };\n return this.currentValidity;\n }\n}\n//# sourceMappingURL=validator.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { Validator } from './validator.js';\n/**\n * A validator that provides constraint validation that emulates\n * `<input type=\"radio\">` validation.\n */\nexport class RadioValidator extends Validator {\n computeValidity(states) {\n if (!this.radioElement) {\n // Lazily create the radio element\n this.radioElement = document.createElement('input');\n this.radioElement.type = 'radio';\n // A name is required for validation to run\n this.radioElement.name = 'group';\n }\n let isRequired = false;\n let isChecked = false;\n for (const { checked, required } of states) {\n if (required) {\n isRequired = true;\n }\n if (checked) {\n isChecked = true;\n }\n }\n // Firefox v119 doesn't compute grouped radio validation correctly while\n // they are detached from the DOM, which is why we don't render multiple\n // virtual <input>s. Instead, we can check the required/checked states and\n // grab the i18n'd validation message if the value is missing.\n this.radioElement.checked = isChecked;\n this.radioElement.required = isRequired;\n return {\n validity: {\n valueMissing: isRequired && !isChecked,\n },\n validationMessage: this.radioElement.validationMessage,\n };\n }\n equals(prevGroup, nextGroup) {\n if (prevGroup.length !== nextGroup.length) {\n return false;\n }\n for (let i = 0; i < prevGroup.length; i++) {\n const prev = prevGroup[i];\n const next = nextGroup[i];\n if (prev.checked !== next.checked || prev.required !== next.required) {\n return false;\n }\n }\n return true;\n }\n copy(states) {\n // Cast as unknown since typescript does not have enough information to\n // infer that the array always has at least one element.\n return states.map(({ checked, required }) => ({\n checked,\n required,\n }));\n }\n}\n//# sourceMappingURL=radio-validator.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * A `ReactiveController` that provides root node-scoped single selection for\n * elements, similar to native `<input type=\"radio\">` selection.\n *\n * To use, elements should add the controller and call\n * `selectionController.handleCheckedChange()` in a getter/setter. This must\n * be synchronous to match native behavior.\n *\n * @example\n * const CHECKED = Symbol('checked');\n *\n * class MyToggle extends LitElement {\n * get checked() { return this[CHECKED]; }\n * set checked(checked: boolean) {\n * const oldValue = this.checked;\n * if (oldValue === checked) {\n * return;\n * }\n *\n * this[CHECKED] = checked;\n * this.selectionController.handleCheckedChange();\n * this.requestUpdate('checked', oldValue);\n * }\n *\n * [CHECKED] = false;\n *\n * private selectionController = new SingleSelectionController(this);\n *\n * constructor() {\n * super();\n * this.addController(this.selectionController);\n * }\n * }\n */\nexport class SingleSelectionController {\n /**\n * All single selection elements in the host element's root with the same\n * `name` attribute, including the host element.\n */\n get controls() {\n const name = this.host.getAttribute('name');\n if (!name || !this.root || !this.host.isConnected) {\n return [this.host];\n }\n // Cast as unknown since there is not enough information for typescript to\n // know that there is always at least one element (the host).\n return Array.from(this.root.querySelectorAll(`[name=\"${name}\"]`));\n }\n constructor(host) {\n this.host = host;\n this.focused = false;\n this.root = null;\n this.handleFocusIn = () => {\n this.focused = true;\n this.updateTabIndices();\n };\n this.handleFocusOut = () => {\n this.focused = false;\n this.updateTabIndices();\n };\n /**\n * Handles arrow key events from the host. Using the arrow keys will\n * select and check the next or previous sibling with the host's\n * `name` attribute.\n */\n this.handleKeyDown = (event) => {\n const isDown = event.key === 'ArrowDown';\n const isUp = event.key === 'ArrowUp';\n const isLeft = event.key === 'ArrowLeft';\n const isRight = event.key === 'ArrowRight';\n // Ignore non-arrow keys\n if (!isLeft && !isRight && !isDown && !isUp) {\n return;\n }\n // Don't try to select another sibling if there aren't any.\n const siblings = this.controls;\n if (!siblings.length) {\n return;\n }\n // Prevent default interactions on the element for arrow keys,\n // since this controller will introduce new behavior.\n event.preventDefault();\n // Check if moving forwards or backwards\n const isRtl = getComputedStyle(this.host).direction === 'rtl';\n const forwards = isRtl ? isLeft || isDown : isRight || isDown;\n const hostIndex = siblings.indexOf(this.host);\n let nextIndex = forwards ? hostIndex + 1 : hostIndex - 1;\n // Search for the next sibling that is not disabled to select.\n // If we return to the host index, there is nothing to select.\n while (nextIndex !== hostIndex) {\n if (nextIndex >= siblings.length) {\n // Return to start if moving past the last item.\n nextIndex = 0;\n }\n else if (nextIndex < 0) {\n // Go to end if moving before the first item.\n nextIndex = siblings.length - 1;\n }\n // Check if the next sibling is disabled. If so,\n // move the index and continue searching.\n const nextSibling = siblings[nextIndex];\n if (nextSibling.hasAttribute('disabled')) {\n if (forwards) {\n nextIndex++;\n }\n else {\n nextIndex--;\n }\n continue;\n }\n // Uncheck and remove focusability from other siblings.\n for (const sibling of siblings) {\n if (sibling !== nextSibling) {\n sibling.checked = false;\n sibling.tabIndex = -1;\n sibling.blur();\n }\n }\n // The next sibling should be checked, focused and dispatch a change event\n nextSibling.checked = true;\n nextSibling.tabIndex = 0;\n nextSibling.focus();\n // Fire a change event since the change is triggered by a user action.\n // This matches native <input type=\"radio\"> behavior.\n nextSibling.dispatchEvent(new Event('change', { bubbles: true }));\n break;\n }\n };\n }\n hostConnected() {\n this.root = this.host.getRootNode();\n this.host.addEventListener('keydown', this.handleKeyDown);\n this.host.addEventListener('focusin', this.handleFocusIn);\n this.host.addEventListener('focusout', this.handleFocusOut);\n if (this.host.checked) {\n // Uncheck other siblings when attached if already checked. This mimics\n // native <input type=\"radio\"> behavior.\n this.uncheckSiblings();\n }\n // Update for the newly added host.\n this.updateTabIndices();\n }\n hostDisconnected() {\n this.host.removeEventListener('keydown', this.handleKeyDown);\n this.host.removeEventListener('focusin', this.handleFocusIn);\n this.host.removeEventListener('focusout', this.handleFocusOut);\n // Update for siblings that are still connected.\n this.updateTabIndices();\n this.root = null;\n }\n /**\n * Should be called whenever the host's `checked` property changes\n * synchronously.\n */\n handleCheckedChange() {\n if (!this.host.checked) {\n return;\n }\n this.uncheckSiblings();\n this.updateTabIndices();\n }\n uncheckSiblings() {\n for (const sibling of this.controls) {\n if (sibling !== this.host) {\n sibling.checked = false;\n }\n }\n }\n /**\n * Updates the `tabindex` of the host and its siblings.\n */\n updateTabIndices() {\n // There are three tabindex states for a group of elements:\n // 1. If any are checked, that element is focusable.\n const siblings = this.controls;\n const checkedSibling = siblings.find((sibling) => sibling.checked);\n // 2. If an element is focused, the others are no longer focusable.\n if (checkedSibling || this.focused) {\n const focusable = checkedSibling || this.host;\n focusable.tabIndex = 0;\n for (const sibling of siblings) {\n if (sibling !== focusable) {\n sibling.tabIndex = -1;\n }\n }\n return;\n }\n // 3. If none are checked or focused, all are focusable.\n for (const sibling of siblings) {\n sibling.tabIndex = 0;\n }\n }\n}\n//# sourceMappingURL=single-selection-controller.js.map","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nvar _a;\nimport { __decorate } from \"tslib\";\nimport '../../focus/md-focus-ring.js';\nimport '../../ripple/ripple.js';\nimport { html, isServer, LitElement } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { isActivationClick } from '../../internal/events/form-label-activation.js';\nimport { createValidator, getValidityAnchor, mixinConstraintValidation, } from '../../labs/behaviors/constraint-validation.js';\nimport { internals, mixinElementInternals, } from '../../labs/behaviors/element-internals.js';\nimport { mixinFocusable } from '../../labs/behaviors/focusable.js';\nimport { getFormState, getFormValue, mixinFormAssociated, } from '../../labs/behaviors/form-associated.js';\nimport { RadioValidator } from '../../labs/behaviors/validators/radio-validator.js';\nimport { SingleSelectionController } from './single-selection-controller.js';\nconst CHECKED = Symbol('checked');\nlet maskId = 0;\n// Separate variable needed for closure.\nconst radioBaseClass = mixinConstraintValidation(mixinFormAssociated(mixinElementInternals(mixinFocusable(LitElement))));\n/**\n * A radio component.\n *\n * @fires input {InputEvent} Dispatched when the value changes from user\n * interaction. --bubbles\n * @fires change {Event} Dispatched when the value changes from user\n * interaction. --bubbles --composed\n */\nexport class Radio extends radioBaseClass {\n /**\n * Whether or not the radio is selected.\n */\n get checked() {\n return this[CHECKED];\n }\n set checked(checked) {\n const wasChecked = this.checked;\n if (wasChecked === checked) {\n return;\n }\n this[CHECKED] = checked;\n this.requestUpdate('checked', wasChecked);\n this.selectionController.handleCheckedChange();\n }\n constructor() {\n super();\n // Unique maskId is required because of a Safari bug that fail to persist\n // reference to the mask. This should be removed once the bug is fixed.\n this.maskId = `cutout${++maskId}`;\n this[_a] = false;\n /**\n * Whether or not the radio is required. If any radio is required in a group,\n * all radios are implicitly required.\n */\n this.required = false;\n /**\n * The element value to use in form submission when checked.\n */\n this.value = 'on';\n this.selectionController = new SingleSelectionController(this);\n this.addController(this.selectionController);\n if (!isServer) {\n this[internals].role = 'radio';\n this.addEventListener('click', this.handleClick.bind(this));\n this.addEventListener('keydown', this.handleKeydown.bind(this));\n }\n }\n render() {\n const classes = { 'checked': this.checked };\n return html `\n <div class=\"container ${classMap(classes)}\" aria-hidden=\"true\">\n <md-ripple\n part=\"ripple\"\n .control=${this}\n ?disabled=${this.disabled}></md-ripple>\n <md-focus-ring part=\"focus-ring\" .control=${this}></md-focus-ring>\n <svg class=\"icon\" viewBox=\"0 0 20 20\">\n <mask id=\"${this.maskId}\">\n <rect width=\"100%\" height=\"100%\" fill=\"white\" />\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"black\" />\n </mask>\n <circle\n class=\"outer circle\"\n cx=\"10\"\n cy=\"10\"\n r=\"10\"\n mask=\"url(#${this.maskId})\" />\n <circle class=\"inner circle\" cx=\"10\" cy=\"10\" r=\"5\" />\n </svg>\n\n <div class=\"touch-target\"></div>\n </div>\n `;\n }\n updated() {\n this[internals].ariaChecked = String(this.checked);\n }\n async handleClick(event) {\n if (this.disabled) {\n return;\n }\n // allow event to propagate to user code after a microtask.\n await 0;\n if (event.defaultPrevented) {\n return;\n }\n if (isActivationClick(event)) {\n this.focus();\n }\n // Per spec, clicking on a radio input always selects it.\n this.checked = true;\n this.dispatchEvent(new Event('change', { bubbles: true }));\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n }\n async handleKeydown(event) {\n // allow event to propagate to user code after a microtask.\n await 0;\n if (event.key !== ' ' || event.defaultPrevented) {\n return;\n }\n this.click();\n }\n [(_a = CHECKED, getFormValue)]() {\n return this.checked ? this.value : null;\n }\n [getFormState]() {\n return String(this.checked);\n }\n formResetCallback() {\n // The checked property does not reflect, so the original attribute set by\n // the user is used to determine the default value.\n this.checked = this.hasAttribute('checked');\n }\n formStateRestoreCallback(state) {\n this.checked = state === 'true';\n }\n [createValidator]() {\n return new RadioValidator(() => {\n if (!this.selectionController) {\n // Validation runs on superclass construction, so selection controller\n // might not actually be ready until this class constructs.\n return [this];\n }\n return this.selectionController.controls;\n });\n }\n [getValidityAnchor]() {\n return this.container;\n }\n}\n__decorate([\n property({ type: Boolean })\n], Radio.prototype, \"checked\", null);\n__decorate([\n property({ type: Boolean })\n], Radio.prototype, \"required\", void 0);\n__decorate([\n property()\n], Radio.prototype, \"value\", void 0);\n__decorate([\n query('.container')\n], Radio.prototype, \"container\", void 0);\n//# sourceMappingURL=radio.js.map","/**\n * @license\n * Copyright 2024 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n// Generated stylesheet for ./radio/internal/radio-styles.css.\nimport { css } from 'lit';\nexport const styles = css `@layer{:host{display:inline-flex;height:var(--md-radio-icon-size, 20px);outline:none;position:relative;vertical-align:top;width:var(--md-radio-icon-size, 20px);-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;--md-ripple-hover-color: var(--md-radio-hover-state-layer-color, var(--md-sys-color-on-surface, #1d1b20));--md-ripple-hover-opacity: var(--md-radio-hover-state-layer-opacity, 0.08);--md-ripple-pressed-color: var(--md-radio-pressed-state-layer-color, var(--md-sys-color-primary, #6750a4));--md-ripple-pressed-opacity: var(--md-radio-pressed-state-layer-opacity, 0.12)}:host([disabled]){cursor:default}:host([touch-target=wrapper]){margin:max(0px,(48px - var(--md-radio-icon-size, 20px))/2)}.container{display:flex;height:100%;place-content:center;place-items:center;width:100%}md-focus-ring{height:44px;inset:unset;width:44px}.checked{--md-ripple-hover-color: var(--md-radio-selected-hover-state-layer-color, var(--md-sys-color-primary, #6750a4));--md-ripple-hover-opacity: var(--md-radio-selected-hover-state-layer-opacity, 0.08);--md-ripple-pressed-color: var(--md-radio-selected-pressed-state-layer-color, var(--md-sys-color-on-surface, #1d1b20));--md-ripple-pressed-opacity: var(--md-radio-selected-pressed-state-layer-opacity, 0.12)}.touch-target{height:48px;position:absolute;width:48px}:host([touch-target=none]) .touch-target{display:none}md-ripple{border-radius:50%;height:var(--md-radio-state-layer-size, 40px);inset:unset;width:var(--md-radio-state-layer-size, 40px)}.icon{fill:var(--md-radio-icon-color, var(--md-sys-color-on-surface-variant, #49454f));inset:0;position:absolute}.outer.circle{transition:fill 50ms linear}.inner.circle{opacity:0;transform-origin:center;transition:opacity 50ms linear}.checked .icon{fill:var(--md-radio-selected-icon-color, var(--md-sys-color-primary, #6750a4))}.checked .inner.circle{animation:inner-circle-grow 300ms cubic-bezier(0.05, 0.7, 0.1, 1);opacity:1}@keyframes inner-circle-grow{from{transform:scale(0)}to{transform:scale(1)}}:host([disabled]) .circle{animation-duration:0s;transition-duration:0s}:host(:hover) .icon{fill:var(--md-radio-hover-icon-color, var(--md-sys-color-on-surface, #1d1b20))}:host(:focus-within) .icon{fill:var(--md-radio-focus-icon-color, var(--md-sys-color-on-surface, #1d1b20))}:host(:active) .icon{fill:var(--md-radio-pressed-icon-color, var(--md-sys-color-on-surface, #1d1b20))}:host([disabled]) .icon{fill:var(--md-radio-disabled-unselected-icon-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-radio-disabled-unselected-icon-opacity, 0.38)}:host(:hover) .checked .icon{fill:var(--md-radio-selected-hover-icon-color, var(--md-sys-color-primary, #6750a4))}:host(:focus-within) .checked .icon{fill:var(--md-radio-selected-focus-icon-color, var(--md-sys-color-primary, #6750a4))}:host(:active) .checked .icon{fill:var(--md-radio-selected-pressed-icon-color, var(--md-sys-color-primary, #6750a4))}:host([disabled]) .checked .icon{fill:var(--md-radio-disabled-selected-icon-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-radio-disabled-selected-icon-opacity, 0.38)}}@layer hcm{@media(forced-colors: active){.icon{fill:CanvasText}:host([disabled]) .icon{fill:GrayText;opacity:1}}}\n`;\n//# sourceMappingURL=radio-styles.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { Radio } from './internal/radio.js';\nimport { styles } from './internal/radio-styles.js';\n/**\n * @summary Radio buttons allow users to select one option from a set.\n *\n * @description\n * Radio buttons are the recommended way to allow users to make a single\n * selection from a list of options.\n *\n * Only one radio button can be selected at a time.\n *\n * Use radio buttons to:\n * - Select a single option from a set\n * - Expose all available options\n *\n * @final\n * @suppress {visibility}\n */\nlet MdRadio = class MdRadio extends Radio {\n};\nMdRadio.styles = [styles];\nMdRadio = __decorate([\n customElement('md-radio')\n], MdRadio);\nexport { MdRadio };\n//# sourceMappingURL=radio.js.map","import { html, css, LitElement } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport '@material/web/radio/radio.js';\r\n\r\n@customElement('custom-radio')\r\nexport class CustomRadio extends LitElement {\r\n @property({ type: String }) name = 'radio-group';\r\n @property({ type: Boolean }) checked = false;\r\n @property({ type: Boolean }) disabled = false;\r\n @property({ type: Boolean }) error = false;\r\n\r\n static styles = css`\r\n :host {\r\n font-family: \"Graphik\", sans-serif;\r\n }\r\n\r\n .radio-container {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n cursor: pointer;\r\n }\r\n\r\n md-radio {\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 50%;\r\n background: var(--white);\r\n border: 1px solid var(--secondary-color-20);\r\n }\r\n\r\n md-radio::part(container):hover {\r\n box-shadow: 0px 0px 0px 4px #0F19411A;\r\n border: 1px solid var(--secondary-color-20);\r\n border-radius: 50%;\r\n }\r\n\r\n md-radio:focus-visible::part(container) {\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n md-radio.checked {\r\n background: var(--primary-color);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n md-radio.checked.error {\r\n background: var(--ui-negative);\r\n border: 1px solid var(--ui-negative);\r\n }\r\n\r\n md-radio.error {\r\n border: 1px solid var(--ui-negative);\r\n }\r\n\r\n md-radio.disabled {\r\n cursor: not-allowed;\r\n background: var(--secondary-color-20);\r\n border: 1px solid var(--secondary-color-20);\r\n }\r\n `;\r\n\r\n render() {\r\n const radioClasses = [\r\n this.checked ? 'checked' : '',\r\n this.error ? 'error' : '',\r\n this.disabled ? 'disabled' : '',\r\n ].join(' ');\r\n\r\n return html`\r\n <label class=\"radio-container\">\r\n <md-radio \r\n name=${this.name} \r\n class=${radioClasses}\r\n ?checked=${this.checked} \r\n ?disabled=${this.disabled}\r\n ></md-radio>\r\n <span>${this.checked ? 'On' : 'Off'} ${this.error ? 'Error' : ''}</span>\r\n </label>\r\n `;\r\n }\r\n}","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.3.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import{directive as s}from\"../directive.js\";import{UnsafeHTMLDirective as e}from\"./unsafe-html.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t extends e{}t.directiveName=\"unsafeSVG\",t.resultType=2;const o=s(t);export{o as unsafeSVG};\n//# sourceMappingURL=unsafe-svg.js.map\n","/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\nif (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.2.6';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { bodyL, bodyM, bodyXS } from '../styles/fontStyles';\r\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\r\nimport DOMPurify from 'dompurify';\r\n\r\ntype SelectOption = string | {\r\n label: string;\r\n value: string | object;\r\n disabled?: boolean;\r\n icon?: string;\r\n};\r\n\r\n@customElement('filterable-select')\r\nexport class FilterableSelect extends LitElement {\r\n @property({ type: Array }) options: SelectOption[] = [];\r\n @property({ type: String }) placeholder = 'Filtrar opciones...';\r\n @property({ type: String, attribute: 'default-value' }) defaultValue = '';\r\n @property({ type: Boolean }) disabled = false;\r\n @property({ type: Object }) value: string | object = '';\r\n @property({ type: String }) label = '';\r\n @property({ type: String }) labelColor = '';\r\n @property({ type: Boolean }) filterable = true;\r\n @property({ type: Number }) maxLength?: number;\r\n @property({ type: Boolean, reflect: true }) error: boolean = false;\r\n\r\n @property({ type: Boolean }) required = false;\r\n @property({ type: Boolean }) optional = false;\r\n\r\n @state() private isMobile: boolean = false;\r\n @state() filteredOptions: SelectOption[] = [];\r\n @state() filterValue = '';\r\n @state() isOpen = false;\r\n @state() mobileFilterValue = '';\r\n @state() private highlightedIndex = -1;\r\n\r\n // Nueva variable de estado para rastrear si el campo fue borrado por el usuario\r\n @state() private _isCleared: boolean = false;\r\n\r\n private debounceTimeout: number | null = null;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: 'Graphik', sans-serif;\r\n width: 100%;\r\n }\r\n\r\n :host([error]) .input-wrapper {\r\n border: 1px solid var(--ui-negative, red) !important;\r\n }\r\n\r\n :host([error]) .input-container:not(.open) .input-wrapper:hover {\r\n box-shadow: 0px 0px 0px 4px #E00F0F1A;\r\n }\r\n\r\n :host([error]) .input-container.open:not(.mobile) .input-wrapper {\r\n border-bottom-left-radius: 0;\r\n border-bottom-right-radius: 0;\r\n border: 1px solid var(--ui-negative, red) !important;\r\n border-bottom: 1px solid transparent !important;\r\n }\r\n\r\n :host([error]) .input-container:not(.mobile) .options-list {\r\n border: 1px solid var(--ui-negative, red) !important;\r\n border-top: none !important;\r\n border-radius: 0 0 4px 4px;\r\n }\r\n\r\n .select-container {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n width: 100%;\r\n }\r\n\r\n .label-container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 8px;\r\n }\r\n\r\n .form-label {\r\n ${bodyM}\r\n display: flex;\r\n align-items: baseline;\r\n flex-direction: row;\r\n gap: 4px;\r\n color: var(--label-color, var(--secondary-color-80));\r\n }\r\n\r\n .input-container {\r\n position: relative;\r\n width: 100%;\r\n }\r\n\r\n .input-container.focused:not(.open):not(.mobile) .input-wrapper {\r\n border: 1px solid var(--primary-color);\r\n border-radius: 4px;\r\n box-shadow: none;\r\n z-index: 11;\r\n }\r\n\r\n .input-container.focused:not(.open):not(.mobile) .input-wrapper:hover {\r\n box-shadow: none;\r\n }\r\n\r\n :host(:not([error])) .input-container.open:not(.mobile) {\r\n border-radius: 4px;\r\n border-bottom-left-radius: 0;\r\n border-bottom-right-radius: 0;\r\n }\r\n\r\n :host(:not([error])) .input-container.open:not(.mobile) .input-wrapper {\r\n border: 1px solid var(--primary-color);\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n border-bottom-left-radius: 0;\r\n border-bottom-right-radius: 0;\r\n border-bottom: 1px solid transparent;\r\n box-shadow: none;\r\n z-index: 11;\r\n }\r\n\r\n :host(:not([error])) .input-wrapper:hover {\r\n box-shadow: 0px 0px 0px 4px #0F19411A;\r\n }\r\n\r\n :host .input-container.open:not(.mobile)::after {\r\n content: '';\r\n position: absolute;\r\n top: calc(100% - 1px);\r\n left: 20px;\r\n right: 20px;\r\n height: 1px;\r\n background-color: var(--gray-20);\r\n z-index: 10;\r\n }\r\n\r\n .input-wrapper {\r\n border: 1px solid var(--secondary-color-10);\r\n border-radius: 4px;\r\n overflow: hidden;\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n transition: box-shadow 0.2s ease-in-out;\r\n background-color: white;\r\n }\r\n\r\n .mobile-modal .filter-input {\r\n border-bottom: 1px solid var(--gray-20);\r\n }\r\n\r\n .filter-input {\r\n ${bodyL};\r\n padding: 16px;\r\n padding-right: 40px;\r\n border: none;\r\n outline: none;\r\n width: 100%;\r\n box-sizing: border-box;\r\n background: white;\r\n cursor: pointer;\r\n color: var(--secondary-color);\r\n flex-grow: 1;\r\n }\r\n\r\n .filter-input,\r\n .filter-fake,\r\n .input-wrapper,\r\n .mobile-modal {\r\n -webkit-tap-highlight-color: transparent !important;\r\n }\r\n\r\n .filter-input::placeholder {\r\n ${bodyL};\r\n color: var(--secondary-color-40);\r\n }\r\n\r\n .icon-button {\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n }\r\n\r\n randstad-icon {\r\n width: 24px;\r\n height: 24px;\r\n color: var(--primary-color);\r\n }\r\n\r\n .options-list {\r\n width: 100%;\r\n position: absolute;\r\n top: 99%;\r\n left: 0;\r\n right: 0;\r\n max-height: 200px;\r\n overflow-y: auto;\r\n border: 1px solid var(--primary-color);\r\n border-top: none;\r\n border-radius: 0 0 4px 4px;\r\n background: white;\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n z-index: 10;\r\n }\r\n\r\n .options-list li {\r\n ${bodyL};\r\n padding: 8px 16px 8px 16px;\r\n cursor: pointer;\r\n color: var(--secondary-color-80);\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .options-list li.highlighted {\r\n background-color: var(--primary-color-10);\r\n }\r\n\r\n .mobile-modal {\r\n position: fixed;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n background-color: white;\r\n z-index: 1000;\r\n border-radius: 12px 12px 0 0;\r\n box-shadow: 0 -4px 10px rgba(0, 0, 0, 0.15);\r\n display: flex;\r\n flex-direction: column;\r\n padding: 0px;\r\n gap: 12px;\r\n animation: slideUp 0.5s ease-out;\r\n max-height: 80vh;\r\n overflow-y: auto;\r\n }\r\n\r\n .mobile-modal .options-list {\r\n position: static;\r\n max-height: none;\r\n border: none;\r\n box-shadow: none;\r\n }\r\n\r\n .mobile-modal .modal-input-container {\r\n position: relative;\r\n }\r\n\r\n .mobile-modal .modal-close-button {\r\n position: absolute;\r\n top: 50%;\r\n right: 12px;\r\n transform: translateY(-50%);\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n padding: 4px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .mobile-modal .modal-close-button randstad-icon {\r\n width: 20px;\r\n height: 20px;\r\n color: var(--secondary-color-60);\r\n }\r\n\r\n .mobile-backdrop {\r\n position: fixed;\r\n inset: 0;\r\n background-color: rgba(0, 0, 0, 0.4);\r\n z-index: 999;\r\n display: flex;\r\n align-items: flex-end;\r\n }\r\n\r\n .filter-fake {\r\n ${bodyL};\r\n padding: 15px;\r\n padding-right: 40px;\r\n width: 100%;\r\n background: white;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n color: var(--secondary-color-80);\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n @keyframes slideUp {\r\n from {\r\n transform: translateY(100%);\r\n }\r\n to {\r\n transform: translateY(0);\r\n }\r\n }\r\n\r\n .options-list::-webkit-scrollbar {\r\n width: 6px;\r\n }\r\n\r\n .options-list::-webkit-scrollbar-track {\r\n background: transparent;\r\n }\r\n\r\n .options-list::-webkit-scrollbar-thumb {\r\n background-color: var(--secondary-color-30);\r\n border-radius: 4px;\r\n }\r\n\r\n .options-list::-webkit-scrollbar-button {\r\n display: none;\r\n }\r\n\r\n .required {\r\n color: var(--ui-negative);\r\n }\r\n\r\n .optional {\r\n color: var(--secondary-color-60);\r\n ${bodyXS}\r\n }\r\n\r\n /* Estilos por defecto del icon para mobile */\r\n .icon-selected {\r\n width: 24px;\r\n height: auto;\r\n margin-left: 4px;\r\n padding-right: 12px; \r\n border-right: 1px solid var(--secondary-color-20);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n }\r\n\r\n .value-text {\r\n margin-left: 8px; /* Aumentamos el margen para separar el texto en mobile */\r\n }\r\n\r\n /*\r\n * Media query para aplicar estilos de escritorio (a partir de 941px)\r\n */\r\n @media (min-width: 941px) {\r\n .icon-selected {\r\n /* Estilos de escritorio para el icono, se anulan los de mobile */\r\n margin-left: 16px;\r\n padding-right: 18px;\r\n }\r\n \r\n .value-text {\r\n /* En escritorio no necesitamos este margen, lo reseteamos */\r\n margin-left: 0;\r\n }\r\n }\r\n\r\n .icon-selected svg,\r\n .icon-list svg {\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n }\r\n\r\n .icon-list {\r\n width: 24px;\r\n height: auto;\r\n margin-right: 8px;\r\n flex-shrink: 0;\r\n }\r\n `;\r\n\r\n update(changedProperties: Map<string, any>) {\r\n if (changedProperties.has('options')) {\r\n this.filteredOptions = [...this.options];\r\n }\r\n \r\n if (changedProperties.has('defaultValue') || changedProperties.has('options') || changedProperties.has('value')) {\r\n // Ignora la lógica de defaultValue si el componente fue limpiado por el usuario\r\n if (this._isCleared) {\r\n super.update(changedProperties);\r\n return;\r\n }\r\n \r\n const targetValue = this.value || this.defaultValue;\r\n\r\n const match = this.options.find(opt =>\r\n typeof opt === 'string' ? opt === targetValue : opt.value === targetValue\r\n );\r\n\r\n if (match) {\r\n this.filterValue = typeof match === 'string' ? match : match.label;\r\n this.value = typeof match === 'string' ? match : match.value;\r\n } else {\r\n this.filterValue = '';\r\n this.value = '';\r\n }\r\n }\r\n\r\n super.update(changedProperties);\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.updateResponsiveMode();\r\n window.addEventListener('resize', this.updateResponsiveModeBound);\r\n document.addEventListener('click', this.handleClickOutside.bind(this));\r\n }\r\n\r\n disconnectedCallback() {\r\n window.removeEventListener('resize', this.updateResponsiveModeBound);\r\n document.removeEventListener('click', this.handleClickOutside.bind(this));\r\n super.disconnectedCallback();\r\n }\r\n\r\n private updateResponsiveModeBound = this.updateResponsiveMode.bind(this);\r\n\r\n private updateResponsiveMode() {\r\n this.isMobile = window.innerWidth <= 940;\r\n }\r\n\r\n handleInputClick(e: Event) {\r\n if (this.isMobile) {\r\n this.mobileFilterValue = '';\r\n }\r\n\r\n if (this.disabled) return;\r\n this.isOpen = !this.isOpen;\r\n this.requestUpdate();\r\n }\r\n\r\n handleInput(e: Event) {\r\n if (!this.filterable) return;\r\n // Un usuario está escribiendo, por lo tanto, no se ha borrado el campo intencionalmente\r\n this._isCleared = false;\r\n \r\n const rawValue = (e.target as HTMLInputElement).value;\r\n const value = this.maxLength ? rawValue.slice(0, this.maxLength).toLowerCase() : rawValue.toLowerCase();\r\n\r\n this.filterValue = value;\r\n this.value = '';\r\n\r\n this.filteredOptions = this.options.filter(option => {\r\n const label = typeof option === 'string' ? option : option.label;\r\n return label.toLowerCase().includes(this.filterValue.toLowerCase());\r\n });\r\n\r\n this.isOpen = true;\r\n\r\n if (this.debounceTimeout) {\r\n clearTimeout(this.debounceTimeout);\r\n }\r\n\r\n this.debounceTimeout = window.setTimeout(() => {\r\n if (this.filterValue.length > 2) {\r\n this.dispatchEvent(new CustomEvent('filter-location', {\r\n detail: { value: this.filterValue },\r\n bubbles: true,\r\n composed: true\r\n }));\r\n }\r\n }, 300);\r\n\r\n this.requestUpdate();\r\n }\r\n\r\n handleMobileInput(e: Event) {\r\n this._isCleared = false;\r\n const rawValue = (e.target as HTMLInputElement).value;\r\n const value = this.maxLength ? rawValue.slice(0, this.maxLength).toLowerCase() : rawValue.toLowerCase();\r\n\r\n this.mobileFilterValue = value;\r\n this.value = '';\r\n\r\n this.filteredOptions = this.options.filter(option => {\r\n const label = typeof option === 'string' ? option : option.label;\r\n return label.toLowerCase().includes(value);\r\n });\r\n\r\n if (this.debounceTimeout) {\r\n clearTimeout(this.debounceTimeout);\r\n }\r\n\r\n this.debounceTimeout = window.setTimeout(() => {\r\n if (value.length > 2) {\r\n this.dispatchEvent(new CustomEvent('filter-location', {\r\n detail: { value },\r\n bubbles: true,\r\n composed: true\r\n }));\r\n }\r\n }, 300);\r\n }\r\n\r\n handleSelect(option: any) {\r\n // Cuando se selecciona una opción, el campo ya no está \"borrado\"\r\n this._isCleared = false; \r\n\r\n this.value = typeof option === 'string' ? option : option.value;\r\n const value = typeof option === 'string' ? option : option.value;\r\n\r\n this.dispatchEvent(new CustomEvent('option-selected', {\r\n detail: { value },\r\n bubbles: true,\r\n composed: true\r\n }));\r\n\r\n this.filterValue = typeof option === 'string' ? option : option.label;\r\n this.isOpen = false;\r\n this.requestUpdate();\r\n }\r\n\r\n handleIconClick() {\r\n if (this.disabled) return;\r\n\r\n if (this.filterable && this.filterValue) {\r\n // El usuario está borrando el campo, activa el flag\r\n this._isCleared = true; \r\n this.filterValue = '';\r\n this.value = '';\r\n this.filteredOptions = [...this.options];\r\n this.dispatchEvent(new CustomEvent('option-selected', {\r\n detail: { value: '' },\r\n bubbles: true,\r\n composed: true\r\n }));\r\n this.isOpen = false;\r\n } else {\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n this.requestUpdate();\r\n }\r\n\r\n handleClickOutside(e: Event) {\r\n const target = e.target;\r\n if (!(target instanceof Node)) return;\r\n\r\n if (!this.contains(target)) {\r\n this.isOpen = false;\r\n this.requestUpdate();\r\n }\r\n }\r\n\r\n handleKeyDown(e: KeyboardEvent) {\r\n const { key } = e;\r\n if (!this.isOpen && (key === 'Enter' || key === ' ')) {\r\n e.preventDefault();\r\n this.isOpen = true;\r\n return;\r\n }\r\n\r\n if (this.isOpen) {\r\n if (key === 'ArrowDown') {\r\n e.preventDefault();\r\n this.highlightedIndex = Math.min(this.highlightedIndex + 1, this.filteredOptions.length - 1);\r\n this.requestUpdate();\r\n } else if (key === 'ArrowUp') {\r\n e.preventDefault();\r\n this.highlightedIndex = Math.max(this.highlightedIndex - 1, 0);\r\n this.requestUpdate();\r\n } else if (key === 'Enter') {\r\n e.preventDefault();\r\n const option = this.filteredOptions[this.highlightedIndex];\r\n if (option) {\r\n this.handleSelect(option);\r\n }\r\n } else if (key === 'Escape') {\r\n e.preventDefault();\r\n this.isOpen = false;\r\n }\r\n }\r\n }\r\n\r\n private renderSelectedIcon() {\r\n const selectedOption = this.options.find(opt =>\r\n typeof opt === 'string' ? opt === this.value : opt.value === this.value\r\n );\r\n\r\n // Se asegura de que el ícono exista y sea un string antes de usar unsafeSVG\r\n if (selectedOption && typeof selectedOption !== 'string' && selectedOption.icon && typeof selectedOption.icon === 'string') {\r\n return html`<span class=\"icon-selected\">${this.getSanitizeSvg(selectedOption.icon ?? '')}</span>`;\r\n }\r\n \r\n return nothing;\r\n }\r\n\r\n private getSanitizeSvg( iconString: string ) {\r\n console.log( iconString );\r\n const sanitizedSVG = DOMPurify.sanitize( iconString );\r\n return unsafeSVG( sanitizedSVG );\r\n }\r\n\r\n render() {\r\n const isMobile = this.isMobile;\r\n\r\n return html`\r\n <div class=\"select-container\" style=\"${this.labelColor ? ` --label-color: ${this.labelColor}` : ''}\">\r\n ${this.label ? html`\r\n <div class=\"label-container\">\r\n <label class=\"form-label\">\r\n ${this.label}\r\n ${this.required\r\n ? html`<span class=\"required\">*</span>`\r\n : this.optional\r\n ? html`<span class=\"optional\">opcional</span>`\r\n : nothing}\r\n </label>\r\n </div>\r\n ` : ''}\r\n\r\n <div class=\"input-container ${this.isOpen ? 'focused' : ''} ${(this.isOpen && this.filteredOptions.length > 0) ? 'open' : ''} ${isMobile ? 'mobile' : ''}\">\r\n\r\n <div class=\"input-wrapper\">\r\n ${isMobile ? html`\r\n <div\r\n class=\"filter-fake\"\r\n @click=\"${this.handleInputClick}\"\r\n @keydown=\"${this.handleKeyDown}\"\r\n tabindex=\"0\"\r\n role=\"combobox\"\r\n aria-expanded=\"${this.isOpen}\"\r\n aria-controls=\"options-list\"\r\n aria-haspopup=\"listbox\"\r\n aria-activedescendant=\"\"\r\n >\r\n ${this.renderSelectedIcon()} \r\n <span class=\"value-text\">${this.filterValue || this.placeholder}</span>\r\n </div>\r\n ` : html`\r\n ${this.renderSelectedIcon()} <input\r\n class=\"filter-input\"\r\n .value=\"${this.filterValue || ''}\"\r\n @click=\"${this.handleInputClick}\"\r\n @keydown=\"${this.handleKeyDown}\"\r\n @input=${this.handleInput}\r\n placeholder=\"${this.filterValue ? '' : this.placeholder}\"\r\n ?disabled=\"${this.disabled}\"\r\n ?readonly=\"${!this.filterable}\"\r\n maxlength=\"${this.maxLength ?? ''}\"\r\n />\r\n `}\r\n <button\r\n class=\"icon-button\"\r\n @click=\"${this.handleIconClick}\"\r\n ?disabled=\"${this.disabled}\"\r\n >\r\n ${this.filterable && this.filterValue\r\n ? html`<randstad-icon name=\"close\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`\r\n : this.isOpen && this.filteredOptions.length > 0\r\n ? html`<randstad-icon name=\"arrow_up\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`\r\n : html`<randstad-icon name=\"arrow_down\" size=\"24px\" style=\"--icon-color: var(--primary-color);\"></randstad-icon>`\r\n }\r\n </button>\r\n </div>\r\n\r\n ${isMobile && this.isOpen ? html`\r\n <div class=\"mobile-backdrop\" @click=\"${() => { this.isOpen = false; }}\">\r\n <div class=\"mobile-modal\" @click=\"${(e: Event) => e.stopPropagation()}\">\r\n <div class=\"modal-input-container\">\r\n <input\r\n class=\"filter-input\"\r\n .value=\"${this.mobileFilterValue || ''}\"\r\n @input=${(e: Event) => this.handleMobileInput(e)}\r\n placeholder=\"${this.placeholder}\" maxlength=\"${this.maxLength ?? ''}\"\r\n />\r\n <button class=\"modal-close-button\" @click=\"${() => { this.isOpen = false; }}\">\r\n <randstad-icon name=\"close\" size=\"20px\"></randstad-icon>\r\n </button>\r\n </div>\r\n <ul class=\"options-list\">\r\n ${this.filteredOptions.map((option, index) => {\r\n const label = typeof option === 'string' ? option : option.label;\r\n const isDisabled = typeof option === 'object' && option.disabled;\r\n const icon = typeof option === 'object' ? option.icon : undefined;\r\n\r\n return html`\r\n <li\r\n class=\"${isDisabled ? 'disabled' : ''} ${index === this.highlightedIndex ? 'highlighted' : ''}\"\r\n role=\"option\"\r\n aria-selected=\"${index === this.highlightedIndex}\"\r\n @click=\"${() => {\r\n if (!isDisabled) this.handleSelect(option);\r\n }}\"\r\n >\r\n ${icon && typeof icon === 'string' ? html`<span class=\"icon-list\">${this.getSanitizeSvg(icon ?? '')}</span>` : nothing}\r\n ${label}\r\n </li>\r\n `;\r\n })}\r\n </ul>\r\n </div>\r\n </div>\r\n ` : !isMobile && this.isOpen && this.filteredOptions.length > 0 ? html`\r\n <ul class=\"options-list\">\r\n ${this.filteredOptions.map((option, index) => {\r\n const label = typeof option === 'string' ? option : option.label;\r\n const isDisabled = typeof option === 'object' && option.disabled;\r\n const icon = typeof option === 'object' ? option.icon : undefined;\r\n\r\n return html`\r\n <li\r\n class=\"${isDisabled ? 'disabled' : ''} ${index === this.highlightedIndex ? 'highlighted' : ''}\"\r\n role=\"option\"\r\n aria-selected=\"${index === this.highlightedIndex}\"\r\n @click=\"${() => {\r\n if (!isDisabled) this.handleSelect(option);\r\n }}\"\r\n >\r\n ${icon && typeof icon === 'string' ? html`<span class=\"icon-list\">${this.getSanitizeSvg(icon ?? '')}</span>` : nothing}\r\n ${label}\r\n </li>\r\n </li>\r\n `;\r\n })}\r\n </ul>\r\n ` : ''}\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}","const globalStyles = new CSSStyleSheet();\r\n\r\nglobalStyles.replaceSync(`\r\n @font-face {\r\n font-family: 'Graphik';\r\n src: url('/src/assets/font/Graphik-Regular.woff2') format('woff2'),\r\n url('/src/assets/font/Graphik-Regular.woff') format('woff'),\r\n url('/src/assets/font/Graphik-Regular.eot') format('embedded-opentype');\r\n font-weight: normal;\r\n font-style: normal;\r\n }\r\n\r\n .body-s {\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 100%;\r\n letter-spacing: 0%;\r\n color: green;\r\n }\r\n`);\r\n\r\nexport default globalStyles;","import { LitElement, html, css } from 'lit';\r\nimport globalStyles from '../styles/globalStyles';\r\nimport { bodyS } from '../styles/fontStyles';\r\n\r\nclass RandstadSnackbar extends LitElement {\r\n type: string = 'informative';\r\n icon: string = 'info';\r\n message: string = 'Este es un mensaje.';\r\n open: boolean = false;\r\n position: string = 'bottom-center';\r\n private isMobile = false;\r\n\r\n static styles = [\r\n globalStyles,\r\n css`\r\n :host {\r\n display: flex;\r\n position: fixed;\r\n align-items: center;\r\n max-width: 100vw;\r\n height: auto;\r\n z-index: 9999;\r\n }\r\n\r\n :host([position=\"top-left\"]) {\r\n top: 16px;\r\n left: 16px;\r\n right: auto;\r\n transform: none;\r\n justify-content: flex-start;\r\n }\r\n\r\n :host([position=\"top-center\"]) {\r\n top: 16px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n justify-content: center;\r\n }\r\n\r\n :host([position=\"top-right\"]) {\r\n top: 16px;\r\n right: 16px;\r\n left: auto;\r\n transform: none;\r\n justify-content: flex-end;\r\n }\r\n\r\n :host([position=\"bottom-left\"]) {\r\n bottom: 16px;\r\n left: 16px;\r\n right: auto;\r\n transform: none;\r\n justify-content: flex-start;\r\n }\r\n\r\n :host([position=\"bottom-center\"]) {\r\n bottom: 16px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n justify-content: center;\r\n }\r\n\r\n :host([position=\"bottom-right\"]) {\r\n bottom: 16px;\r\n right: 16px;\r\n left: auto;\r\n transform: none;\r\n justify-content: flex-end;\r\n }\r\n\r\n :host(.mobile) {\r\n bottom: 16px !important;\r\n top: auto !important;\r\n left: 50% !important;\r\n transform: translateX(-50%) !important;\r\n justify-content: center !important;\r\n width: 100%;\r\n }\r\n\r\n :host(.mobile) .container {\r\n width: 90vw !important;\r\n }\r\n\r\n .container {\r\n ${bodyS};\r\n display: flex;\r\n align-items: center;\r\n box-sizing: border-box;\r\n min-height: 48px;\r\n min-width: 270px;\r\n max-width: 480px;\r\n border-radius: 4px;\r\n padding: 8px;\r\n gap: 8px;\r\n white-space: nowrap;\r\n color: var(--white);\r\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n .message {\r\n display: block;\r\n display: -webkit-box;\r\n -webkit-box-orient: vertical;\r\n -webkit-line-clamp: 2;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: normal;\r\n max-height: calc(2 * 25px);\r\n line-height: 25px;\r\n word-break: break-word;\r\n max-width: 100%;\r\n }\r\n\r\n .container {\r\n color: var(--white);\r\n }\r\n randstad-icon {\r\n color: var(--white);\r\n }\r\n randstad-icon svg {\r\n fill: var(--white);\r\n }\r\n\r\n .icon {\r\n font-size: 18px;\r\n }\r\n .hidden {\r\n display: none;\r\n }\r\n .success {\r\n background-color: var(--ui-positive);\r\n }\r\n .error {\r\n background-color: var(--ui-negative);\r\n }\r\n .warning {\r\n background-color: var(--ui-warning);\r\n }\r\n .informative {\r\n background-color: var(--ui-informative);\r\n }\r\n `\r\n ];\r\n\r\n static get properties() {\r\n return {\r\n type: { type: String },\r\n icon: { type: String },\r\n message: { type: String },\r\n open: { type: Boolean },\r\n position: { type: String, reflect: true },\r\n };\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.updateResponsiveStyles = this.updateResponsiveStyles.bind(this);\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n window.addEventListener('resize', this.updateResponsiveStyles);\r\n this.updateResponsiveStyles();\r\n }\r\n\r\n disconnectedCallback() {\r\n window.removeEventListener('resize', this.updateResponsiveStyles);\r\n super.disconnectedCallback();\r\n }\r\n\r\n updateResponsiveStyles() {\r\n const isMobile = window.innerWidth <= 940;\r\n this.classList.toggle('mobile', isMobile);\r\n }\r\n\r\n render() {\r\n const ariaRole = this.type === 'error' || this.type === 'warning' ? 'alert' : 'status';\r\n return html`\r\n <div\r\n class=\"container ${this.open ? '' : 'hidden'} ${this.type}\"\r\n role=\"${ariaRole}\"\r\n aria-live=\"polite\"\r\n >\r\n <randstad-icon name=${this.icon} size=\"24px\" color=\"white\"></randstad-icon>\r\n <span class=\"message\">${this.message}</span>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ncustomElements.define('randstad-snackbar', RandstadSnackbar);","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\n\r\n@customElement('custom-stepper')\r\nexport class CustomStepper extends LitElement {\r\n @property({ type: Number }) totalSteps = 4;\r\n @property({ type: Number }) currentStep = 0;\r\n\r\n static styles = css`\r\n .stepper {\r\n display: flex;\r\n gap: 20px;\r\n align-items: center;\r\n }\r\n\r\n .step {\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 50%;\r\n background-color: var(--white);\r\n border: 1px solid var(--secondary-color-20);\r\n position: relative;\r\n box-sizing: content-box;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: 12px;\r\n color: var(--secondary-color-20);\r\n }\r\n\r\n .step .inner-circle {\r\n width: 4px;\r\n height: 4px;\r\n border-radius: 50%;\r\n background-color: var(--white);\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n image-rendering: -webkit-optimize-contrast;\r\n image-rendering: crisp-edges;\r\n backface-visibility: hidden;\r\n transform-style: preserve-3d;\r\n }\r\n\r\n .step.completed {\r\n background-color: var(--primary-color);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n .step.completed randstad-icon {\r\n color: white;\r\n }\r\n\r\n .step.active {\r\n background-color: var(--white);\r\n border: 1px solid var(--primary-color);\r\n }\r\n\r\n .step.active .inner-circle {\r\n background-color: var(--primary-color);\r\n }\r\n\r\n .step.active .pulse-circle {\r\n width: 12px;\r\n height: 12px;\r\n border-radius: 50%;\r\n background-color: var(--primary-color);\r\n opacity: 0.25;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%) scale(0.6);\r\n animation: pulse 2000ms ease-in-out infinite;\r\n image-rendering: -webkit-optimize-contrast;\r\n image-rendering: crisp-edges;\r\n backface-visibility: hidden;\r\n }\r\n\r\n @keyframes pulse {\r\n 0% {\r\n transform: translate(-50%, -50%) scale(0.6);\r\n }\r\n 80%, 100% {\r\n transform: translate(-50%, -50%) scale(1.2);\r\n }\r\n }\r\n\r\n .step,\r\n .inner-circle,\r\n .pulse-circle {\r\n will-change: transform;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"stepper\">\r\n ${Array.from({ length: this.totalSteps }, (_, index) => html`\r\n <div\r\n class=\"step ${index < this.currentStep ? 'completed' : index === this.currentStep ? 'active' : ''}\"\r\n >\r\n ${index < this.currentStep\r\n ? html`<randstad-icon name=\"tick-circle\" size=\"16px\"></randstad-icon>`\r\n : index === this.currentStep\r\n ? html`\r\n <span class=\"pulse-circle\"></span>\r\n <span class=\"inner-circle\"></span>\r\n `\r\n : html`<span class=\"inner-circle\"></span>`}\r\n </div>\r\n `)}\r\n </div>\r\n `;\r\n }\r\n}","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { bodyM, titleXXS } from '../styles/fontStyles';\r\n\r\ninterface TabItem {\r\n label: string;\r\n icon: string;\r\n value: string;\r\n}\r\n\r\n@customElement('tabs-bar')\r\nexport class TabsBar extends LitElement {\r\n @property({ type: Array }) tabs: TabItem[] = [];\r\n @property({ type: String }) selected: string = '';\r\n @state() private internalSelected: string = '';\r\n @state() private showPrev = false;\r\n @state() private showNext = false;\r\n\r\n private readonly SCROLL_OFFSET = 56;\r\n\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n border-bottom: 1px solid #E7E8EC;\r\n font-family: \"Graphik\", sans-serif;\r\n }\r\n\r\n .tab-wrapper {\r\n display: flex;\r\n justify-content: flex-start;\r\n }\r\n\r\n .tab {\r\n ${titleXXS};\r\n display: flex;\r\n gap: 8px;\r\n flex-direction: row;\r\n padding: 24px;\r\n align-items: center;\r\n text-align: center;\r\n color: #6F758D;\r\n cursor: pointer;\r\n text-decoration: none;\r\n position: relative;\r\n flex: 0 0 auto;\r\n min-width: 0;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n transition: background-color 0.2s ease-in-out;\r\n }\r\n\r\n .tab:hover {\r\n background-color: #E7E8EC;\r\n }\r\n\r\n .tab.active {\r\n color: #2175D9;\r\n }\r\n\r\n .tab.active::after {\r\n height: 2px;\r\n background-color: #2175D9;\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n width: 100%;\r\n pointer-events: none;\r\n }\r\n\r\n .tab.active img {\r\n filter: brightness(0) saturate(100%) invert(28%) sepia(87%) saturate(3514%) hue-rotate(202deg) brightness(92%) contrast(101%);\r\n }\r\n\r\n img {\r\n width: 24px;\r\n height: 24px;\r\n }\r\n\r\n .scroll-container {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n overflow: hidden;\r\n }\r\n\r\n .tab-wrapper {\r\n display: flex;\r\n justify-content: flex-start;\r\n gap: 0px;\r\n overflow-x: auto;\r\n scroll-behavior: smooth;\r\n scrollbar-width: none; /* Firefox */\r\n -ms-overflow-style: none; /* IE 10+ */\r\n flex: 1;\r\n }\r\n\r\n .tab-wrapper::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n .scroll-button {\r\n border: none;\r\n font-size: 24px;\r\n cursor: pointer;\r\n z-index: 1;\r\n width: 56px;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n color: #2175D9;\r\n padding: 0px;\r\n }\r\n\r\n .scroll-button.prev {\r\n justify-content: flex-start;\r\n position: absolute;\r\n left: 0;\r\n background: linear-gradient(90deg, #FFFFFF 0%, #FFFFFF 50%, rgba(255, 255, 255, 0) 100%);\r\n }\r\n\r\n .scroll-button.next {\r\n justify-content: flex-end;\r\n position: absolute;\r\n right: 0;\r\n background: linear-gradient(270deg, #FFFFFF 0%, #FFFFFF 50%, rgba(255, 255, 255, 0) 100%);\r\n }\r\n\r\n @media (max-width: 940px) {\r\n .tab {\r\n ${bodyM};\r\n padding: 16px;\r\n }\r\n }\r\n `;\r\n\r\n firstUpdated() {\r\n this.handleScroll();\r\n }\r\n\r\n updated(changed: Map<string, any>) {\r\n if (changed.has('selected')) {\r\n this.internalSelected = this.selected;\r\n }\r\n }\r\n\r\n private selectTab(value: string) {\r\n this.internalSelected = value;\r\n const selectedTab = this.tabs.find(tab => tab.value === value);\r\n if (selectedTab) {\r\n this.dispatchEvent(new CustomEvent('tab-change', {\r\n detail: selectedTab,\r\n bubbles: true,\r\n composed: true,\r\n }));\r\n }\r\n }\r\n\r\n private scrollTabsLeft() {\r\n const wrapper = this.renderRoot.querySelector('.tab-wrapper');\r\n if (!wrapper) return;\r\n\r\n const scrollLeft = wrapper.scrollLeft;\r\n const tabs = Array.from(wrapper.querySelectorAll('.tab')) as HTMLElement[];\r\n\r\n for (let i = tabs.length - 1; i >= 0; i--) {\r\n const el = tabs[i];\r\n const tabLeft = el.offsetLeft;\r\n\r\n // Esta es la nueva condición clave 👇\r\n if (tabLeft < scrollLeft + this.SCROLL_OFFSET - 1) {\r\n const scrollTarget = tabLeft - this.SCROLL_OFFSET;\r\n wrapper.scrollTo({ left: scrollTarget, behavior: 'smooth' });\r\n break;\r\n }\r\n }\r\n\r\n setTimeout(() => this.handleScroll(), 300);\r\n }\r\n\r\n private scrollTabsRight() {\r\n const wrapper = this.renderRoot.querySelector('.tab-wrapper');\r\n if (!wrapper) return;\r\n\r\n const wrapperLeft = wrapper.scrollLeft;\r\n const tabs = Array.from(wrapper.querySelectorAll('.tab')) as HTMLElement[];\r\n\r\n for (const el of tabs) {\r\n if (el.offsetLeft > wrapperLeft + this.SCROLL_OFFSET) {\r\n const scrollTarget = el.offsetLeft - this.SCROLL_OFFSET;\r\n wrapper.scrollTo({ left: scrollTarget, behavior: 'smooth' });\r\n break;\r\n }\r\n }\r\n\r\n setTimeout(() => this.handleScroll(), 300);\r\n }\r\n\r\n private handleScroll = () => {\r\n const wrapper = this.renderRoot.querySelector('.tab-wrapper');\r\n if (!wrapper) return;\r\n\r\n const { scrollLeft, scrollWidth, clientWidth } = wrapper;\r\n\r\n this.showPrev = scrollLeft > 0;\r\n this.showNext = scrollLeft + clientWidth < scrollWidth - 1;\r\n };\r\n\r\n render() {\r\n return html`\r\n <div class=\"scroll-container\">\r\n ${this.showPrev ? html`\r\n <button class=\"scroll-button prev\" @click=${this.scrollTabsLeft}>\r\n <randstad-icon name=\"arrow_left\" size=\"36px\"></randstad-icon>\r\n </button>\r\n ` : null}\r\n\r\n <div class=\"tab-wrapper\" @scroll=${this.handleScroll}>\r\n ${this.tabs.map(tab => html`\r\n <div class=\"tab ${this.internalSelected === tab.value ? 'active' : ''}\"\r\n @click=${() => this.selectTab(tab.value)}>\r\n <img src=\"/assets/icons/${tab.icon}\" alt=\"${tab.label}\" />\r\n <span>${tab.label}</span>\r\n </div>\r\n `)}\r\n </div>\r\n\r\n ${this.showNext ? html`\r\n <button class=\"scroll-button next\" @click=${this.scrollTabsRight}>\r\n <randstad-icon name=\"arrow_right\" size=\"36px\"></randstad-icon>\r\n </button>\r\n ` : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { bodyS, bodyXS } from '../styles/fontStyles';\r\n\r\n@customElement('upload-image')\r\nexport class UploadImage extends LitElement {\r\n @property({ type: Array }) files: File[] = [];\r\n @state() private loading = false;\r\n @state() private progress = 0;\r\n\r\n @state() private isDragging = false;\r\n @property({ type: Boolean, reflect: true }) disabled = false;\r\n\r\n static styles = css`\r\n\r\n :host {\r\n font-family: 'Graphik', sans-serif;\r\n }\r\n\r\n .container {\r\n display: flex;\r\n gap: 16px;\r\n flex-direction: column;\r\n border: 1px solid var(--secondary-color-10);\r\n border-radius: 4px;\r\n padding: 16px;\r\n align-items: center;\r\n background-color: var(--white);\r\n transition: border 0.2s ease, outline 0.2s ease;\r\n }\r\n\r\n .container.dragging {\r\n border: 1px dashed var(--secondary-color-40);\r\n }\r\n \r\n .icon {\r\n width: 40px;\r\n height: 40px\r\n }\r\n\r\n .text-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n gap: 8px;\r\n }\r\n\r\n .text-main {\r\n ${bodyS};\r\n text-align: center;\r\n vertical-align: middle;\r\n color: var(--secondary-color-80);\r\n }\r\n\r\n .text-secondary {\r\n ${bodyXS};\r\n text-align: center;\r\n vertical-align: middle;\r\n color: var(--secondary-color-60);\r\n }\r\n\r\n .text-tertiary {\r\n ${bodyXS};\r\n text-align: center;\r\n vertical-align: middle;\r\n color: var(--secondary-color-40);\r\n }\r\n\r\n .button {\r\n ${bodyXS};\r\n background-color: var(--primary-color);\r\n border: none;\r\n padding: 4px 16px;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n color: var(--white);\r\n text-align: center;\r\n vertical-align: middle;\r\n }\r\n\r\n :host([disabled]) .button {\r\n background-color: var(--secondary-color-20);\r\n color: var(--secondary-color-80);\r\n cursor: not-allowed;\r\n }\r\n\r\n input[type=\"file\"] {\r\n display: none;\r\n }\r\n\r\n .progress-bar-container {\r\n min-height: 23px;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .progress-bar {\r\n min-width: 80px;\r\n height: 8px;\r\n background-color: var(--secondary-color-20);\r\n border-radius: 999px;\r\n overflow: hidden;\r\n }\r\n\r\n .progress-bar-fill {\r\n height: 100%;\r\n background-color: var(--primary-color);\r\n transition: width 0.1s ease;\r\n }\r\n `;\r\n\r\n private handleFiles(files: FileList | null) {\r\n if (!files || this.loading) return;\r\n\r\n const selected = Array.from(files).slice(0, 3 - this.files.length);\r\n\r\n this.loading = true;\r\n this.progress = 0;\r\n\r\n const interval = setInterval(() => {\r\n this.progress += 5;\r\n if (this.progress >= 100) {\r\n clearInterval(interval);\r\n this.files = [...this.files, ...selected];\r\n this.loading = false;\r\n this.progress = 0;\r\n this.dispatchEvent(new CustomEvent('files-changed', { detail: this.files }));\r\n }\r\n }, 100);\r\n }\r\n\r\n private onFileInputChange(e: Event) {\r\n const target = e.target as HTMLInputElement;\r\n this.handleFiles(target.files);\r\n }\r\n\r\n private onDrop(e: DragEvent) {\r\n e.preventDefault();\r\n if (this.disabled) return;\r\n this.isDragging = false;\r\n this.handleFiles(e.dataTransfer?.files || null);\r\n }\r\n\r\n private onDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n if (this.disabled) return;\r\n this.isDragging = true;\r\n }\r\n\r\n private onDragLeave(e: DragEvent) {\r\n e.preventDefault();\r\n if (this.disabled) return;\r\n this.isDragging = false;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"container ${this.isDragging ? 'dragging' : ''}\"\r\n @drop=\"${this.onDrop}\"\r\n @dragover=\"${this.onDragOver}\"\r\n @dragleave=\"${this.onDragLeave}\">\r\n <img class=\"icon\"\r\n src=${this.disabled\r\n ? '/assets/img/image-upload-disabled.svg'\r\n : '/assets/img/image-upload-circle.svg'}\r\n alt=\"Subir imagen\" />\r\n <div class=\"text-container\">\r\n <div class=\"text-main\">subí hasta 3 imágenes</div>\r\n <div class=\"text-secondary\">\r\n Podés agregar un archivo o arrastrar y soltar acá\r\n </div>\r\n <div class=\"text-tertiary\">.jpg, .jpeg, .png</div>\r\n </div>\r\n ${this.loading\r\n ? html`\r\n <div class=\"progress-bar-container\">\r\n <div class=\"progress-bar\" role=\"progressbar\" aria-label=\"Subiendo archivo…\">\r\n <div class=\"progress-bar-fill\" style=\"width: ${this.progress}%;\"></div>\r\n </div>\r\n </div>\r\n `\r\n : html`\r\n <label class=\"button\">\r\n agregar archivo\r\n <input type=\"file\" accept=\".jpg,.jpeg,.png\" multiple @change=\"${this.onFileInputChange}\" />\r\n </label>\r\n `}\r\n </div>\r\n `;\r\n }\r\n}"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","SuppressedError","t","e","o","addInitializer","customElements","define","globalThis","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","WeakMap","n$3","constructor","this","_$cssResult$","Error","cssText","styleSheet","get","replaceSync","set","toString","cssRules","n","is","h","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","b","attribute","type","String","converter","reflect","useDefault","hasChanged","litPropertyMetadata","y","HTMLElement","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","hasOwnProperty","create","wrapped","elementProperties","noAccessor","getPropertyDescriptor","call","requestUpdate","configurable","enumerable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$ET","removeAttribute","_$Ej","hasAttribute","C","_$EP","has","_$Eq","reject","scheduleUpdate","performUpdate","shouldUpdate","willUpdate","hostUpdate","update","_$EM","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","kind","name","init","querySelector","bodyXS","css","bodyS","bodyM","bodyL","titleXXS","titleXS","titleS","AccordionPanel","LitElement","title","isOpen","isDesktop","window","innerWidth","handleResize","addEventListener","removeEventListener","toggle","renderIcon","html","render","property","customElement","AccordionList","RandstadButton","variant","label","loader","iconPosition","disabled","iconName","idevent","handleClick","event","form","closest","requestSubmit","reset","dispatchEvent","CustomEvent","detail","composed","bubbles","cancelable","classes","button","dotColor","classMap","iconSrc","CarouselCard","img","description","buttonLabel","cardId","Checkbox","checked","error","toggleCheck","Event","RandstadForm","value","icon","helper","errorMessage","typing","isPasswordVisible","cleanButton","required","optional","togglePassword","input","currentTarget","parentElement","handleInput","newValue","undefined","maxLength","slice","handleClear","handleLinkClick","preventDefault","linkRoute","handleKeyDown","submitEvent","showCleanButton","labelColor","nothing","helpLink","placeholder","linkText","FormGroup","IconComponent","style","setProperty","changedProps","loadIcon","response","fetch","ok","svgText","text","parser","DOMParser","svgElement","parseFromString","querySelectorAll","el","innerHTML","console","RandstadNotice","message","open","CustomModal","showNotice","noticeType","noticeMessage","noticeIcon","showPrimaryButton","primaryButtonLabel","showSecondaryButton","secondaryButtonLabel","scrollable","setScrollableMode","closeModal","subtitle","CustomPopup","width","buttonText","confirmText","cancelText","stackedActions","_onBackgroundClick","path","composedPath","popupContainer","includes","focus","closePopup","action","ProgressCircle","max","circumference","Math","PI","safeMax","offset","min","ATTACHABLE_CONTROLLER","FOR_ATTRIBUTE_OBSERVER","isServer","MutationObserver","records","record","AttachableController","htmlFor","host","getAttribute","control","getRootNode","currentControl","attach","detach","onControlChange","observe","attributeFilter","setCurrentControl","EVENTS","FocusRing","visible","inward","attachableController","bind","handleEvent","HANDLED_BY_FOCUS_RING","matches","prev","next","changed","MdFocusRing","EASING","State","FORCED_COLORS","matchMedia","Ripple","hovered","pressed","rippleSize","rippleScale","initialSize","INACTIVE","checkBoundsAfterContextMenu","handlePointerenter","shouldReactToEvent","handlePointerleave","endPressAnimation","handlePointerup","HOLDING","TOUCH_DELAY","WAITING_FOR_CLICK","startPressAnimation","rippleStartEvent","handlePointerdown","isTouch","inBounds","resolve","setTimeout","handlePointercancel","handleContextmenu","determineRippleSize","height","getBoundingClientRect","maxDim","softEdgeSize","floor","maxRadius","sqrt","getNormalizedPointerEventCoords","pointerEvent","scrollX","scrollY","left","top","documentX","documentY","pageX","pageY","x","getTranslationCoordinates","positionEvent","endPoint","startPoint","PointerEvent","mdRoot","growAnimation","cancel","translateStart","translateEnd","animate","transform","pseudoElement","duration","easing","fill","animation","pressAnimationPlayState","Infinity","currentTime","to","isPrimary","pointerId","isPrimaryButton","buttons","bottom","right","pointerType","query","MdRipple","isActivationClick","squelched","isSquelchingEvents","stopImmediatePropagation","async","squelchEventsForMicrotask","squelchEvent","internals","privateInternals","createValidator","getValidityAnchor","privateValidator","privateSyncValidity","privateCustomValidationMessage","isFocusable","privateIsFocusable","externalTabIndex","isUpdatingTabIndex","updateTabIndex","getFormValue","getFormState","Validator","getCurrentState","currentValidity","validity","validationMessage","getValidity","prevState","equals","computeValidity","copy","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","RadioValidator","states","radioElement","isRequired","isChecked","prevGroup","nextGroup","SingleSelectionController","controls","root","from","focused","handleFocusIn","updateTabIndices","handleFocusOut","isDown","isUp","isLeft","isRight","siblings","forwards","getComputedStyle","direction","hostIndex","indexOf","nextIndex","nextSibling","sibling","tabIndex","blur","uncheckSiblings","handleCheckedChange","checkedSibling","find","focusable","_a","CHECKED","maskId","radioBaseClass","base","ConstraintValidationElement","willValidate","checkValidity","reportValidity","setCustomValidity","oldValue","options","nonCustomValidationMessage","setValidity","mixinConstraintValidation","FormAssociatedElement","labels","toggleAttribute","old","setFormValue","formDisabledCallback","formAssociated","mixinFormAssociated","_b","_c","FocusableElement","internalTabIndex","computedTabIndex","mixinFocusable","attachInternals","Radio","wasChecked","selectionController","role","handleKeydown","ariaChecked","defaultPrevented","InputEvent","click","formResetCallback","formStateRestoreCallback","container","MdRadio","CustomRadio","radioClasses","join","i$1","_$AU","_$AM","_$AT","_$Ct","_$Ci","_$AS","createPolicy","createHTML","random","toFixed","createComment","v","_","m","RegExp","g","$","T","for","E","A","createTreeWalker","P","V","lastIndex","exec","test","startsWith","N","strings","_$litType$","parts","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","split","index","ctor","H","I","L","k","tagName","append","data","S","_$Co","_$Cl","_$litDirective$","_$AO","values","M","_$AV","_$AN","_$AD","parentNode","creationScope","importNode","R","z","_$AI","_$Cv","_$AH","_$AA","_$AB","startNode","endNode","_$AR","iterator","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","j","capture","once","passive","litHtmlPolyfillSupport","litHtmlVersions","it","directiveName","_t","raw","resultType","entries","setPrototypeOf","isFrozen","freeze","seal","apply","construct","fun","thisValue","args","Func","arrayForEach","unapply","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","arraySplice","splice","stringToLowerCase","stringToString","stringMatch","match","stringReplace","replace","stringIndexOf","stringTrim","trim","objectHasOwnProperty","regExpTest","typeErrorCreate","func","TypeError","_len2","_key2","thisArg","_len","_key","addToSet","array","transformCaseFunc","lcElement","cleanArray","clone","object","newObject","lookupGetter","prop","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","__proto__","NODE_TYPE","getGlobal","purify","createDOMPurify","DOMPurify","version","removed","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","ownerDocument","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","hooks","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","TRUSTED_TYPES_POLICY","createScriptURL","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","warn","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","node","removeChild","_removeAttribute","getAttributeNode","_initDocument","dirty","doc","leadingWhitespace","dirtyPayload","documentElement","createDocument","body","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","nodeName","attributes","namespaceURI","hasChildNodes","_isNode","_executeHooks","hook","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","childClone","__removalCount","parent","parentTagName","_checkValidNamespace","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","attr","initValue","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","sanitize","importedNode","returnNode","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks","FilterableSelect","defaultValue","filterable","isMobile","filteredOptions","filterValue","mobileFilterValue","highlightedIndex","_isCleared","debounceTimeout","updateResponsiveModeBound","updateResponsiveMode","changedProperties","targetValue","opt","handleClickOutside","handleInputClick","rawValue","filter","option","clearTimeout","handleMobileInput","handleSelect","handleIconClick","contains","renderSelectedIcon","selectedOption","getSanitizeSvg","iconString","log","sanitizedSVG","unsafeSVG","stopPropagation","isDisabled","globalStyles","RandstadSnackbar","position","updateResponsiveStyles","classList","ariaRole","CustomStepper","totalSteps","currentStep","TabsBar","tabs","selected","internalSelected","showPrev","showNext","SCROLL_OFFSET","handleScroll","wrapper","scrollLeft","scrollWidth","clientWidth","selectTab","selectedTab","tab","scrollTabsLeft","tabLeft","offsetLeft","scrollTarget","scrollTo","behavior","scrollTabsRight","wrapperLeft","UploadImage","files","loading","progress","isDragging","handleFiles","interval","setInterval","clearInterval","onFileInputChange","onDrop","dataTransfer","onDragOver","onDragLeave"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,43,44,45]}
|