UNPKG

react-image-mask

Version:

A React component for creating image masks with drawing tools

1,193 lines (1,172 loc) 1.86 MB
import { jsxs, jsx } from 'react/jsx-runtime'; import * as React from 'react'; import React__default, { useState, useRef, useEffect, forwardRef, useCallback, useImperativeHandle } from 'react'; /****************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function __spreadArray(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); } typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { var e = new Error(message); return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; }; /*! * Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2025 Fonticons, Inc. */ function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _arrayWithHoles$1(r) { if (Array.isArray(r)) return r; } function _arrayWithoutHoles$1(r) { if (Array.isArray(r)) return _arrayLikeToArray$1(r); } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey$1(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", { writable: false }), e; } function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e) { t && (r = t); var n = 0, F = function () {}; return { s: F, n: function () { return n >= r.length ? { done: true } : { done: false, value: r[n++] }; }, e: function (r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = true, u = false; return { s: function () { t = t.call(r); }, n: function () { var r = t.next(); return a = r.done, r; }, e: function (r) { u = true, o = r; }, f: function () { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _defineProperty$1(e, r, t) { return (r = _toPropertyKey$1(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; } function _iterableToArray$1(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } function _iterableToArrayLimit$1(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = true, o = false; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = true, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _nonIterableRest$1() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _nonIterableSpread$1() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _slicedToArray$1(r, e) { return _arrayWithHoles$1(r) || _iterableToArrayLimit$1(r, e) || _unsupportedIterableToArray$1(r, e) || _nonIterableRest$1(); } function _toConsumableArray$1(r) { return _arrayWithoutHoles$1(r) || _iterableToArray$1(r) || _unsupportedIterableToArray$1(r) || _nonIterableSpread$1(); } function _toPrimitive$1(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _toPropertyKey$1(t) { var i = _toPrimitive$1(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _typeof$1(o) { "@babel/helpers - typeof"; return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof$1(o); } function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } } var noop = function noop() {}; var _WINDOW = {}; var _DOCUMENT = {}; var _MUTATION_OBSERVER = null; var _PERFORMANCE = { mark: noop, measure: noop }; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver; if (typeof performance !== 'undefined') _PERFORMANCE = performance; } catch (e) {} // eslint-disable-line no-empty var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var MUTATION_OBSERVER = _MUTATION_OBSERVER; var PERFORMANCE = _PERFORMANCE; !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var _so; var K = /fa(k|kd|s|r|l|t|d|dr|dl|dt|b|slr|slpr|wsb|tl|ns|nds|es|jr|jfr|jdr|cr|ss|sr|sl|st|sds|sdr|sdl|sdt)?[\-\ ]/, W = /Font ?Awesome ?([567 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit|Notdog Duo|Notdog|Chisel|Etch|Thumbprint|Jelly Fill|Jelly Duo|Jelly|Slab Press|Slab|Whiteboard)?.*/i; var z = { classic: { fa: "solid", fas: "solid", "fa-solid": "solid", far: "regular", "fa-regular": "regular", fal: "light", "fa-light": "light", fat: "thin", "fa-thin": "thin", fab: "brands", "fa-brands": "brands" }, duotone: { fa: "solid", fad: "solid", "fa-solid": "solid", "fa-duotone": "solid", fadr: "regular", "fa-regular": "regular", fadl: "light", "fa-light": "light", fadt: "thin", "fa-thin": "thin" }, sharp: { fa: "solid", fass: "solid", "fa-solid": "solid", fasr: "regular", "fa-regular": "regular", fasl: "light", "fa-light": "light", fast: "thin", "fa-thin": "thin" }, "sharp-duotone": { fa: "solid", fasds: "solid", "fa-solid": "solid", fasdr: "regular", "fa-regular": "regular", fasdl: "light", "fa-light": "light", fasdt: "thin", "fa-thin": "thin" }, slab: { "fa-regular": "regular", faslr: "regular" }, "slab-press": { "fa-regular": "regular", faslpr: "regular" }, thumbprint: { "fa-light": "light", fatl: "light" }, whiteboard: { "fa-semibold": "semibold", fawsb: "semibold" }, notdog: { "fa-solid": "solid", fans: "solid" }, "notdog-duo": { "fa-solid": "solid", fands: "solid" }, etch: { "fa-solid": "solid", faes: "solid" }, jelly: { "fa-regular": "regular", fajr: "regular" }, "jelly-fill": { "fa-regular": "regular", fajfr: "regular" }, "jelly-duo": { "fa-regular": "regular", fajdr: "regular" }, chisel: { "fa-regular": "regular", facr: "regular" } }, O = { GROUP: "duotone-group", PRIMARY: "primary", SECONDARY: "secondary" }, G = ["fa-classic", "fa-duotone", "fa-sharp", "fa-sharp-duotone", "fa-thumbprint", "fa-whiteboard", "fa-notdog", "fa-notdog-duo", "fa-chisel", "fa-etch", "fa-jelly", "fa-jelly-fill", "fa-jelly-duo", "fa-slab", "fa-slab-press"]; var a$1 = "classic", o = "duotone", d = "sharp", t = "sharp-duotone", i$1 = "chisel", n = "etch", h$1 = "jelly", s = "jelly-duo", f = "jelly-fill", g = "notdog", l$1 = "notdog-duo", u = "slab", p$1 = "slab-press", e = "thumbprint", w = "whiteboard", m$1 = "Classic", y = "Duotone", x$1 = "Sharp", c$1 = "Sharp Duotone", I = "Chisel", b$1 = "Etch", F = "Jelly", v = "Jelly Duo", S = "Jelly Fill", A = "Notdog", P = "Notdog Duo", j = "Slab", B = "Slab Press", N = "Thumbprint", k = "Whiteboard", oo = [a$1, o, d, t, i$1, n, h$1, s, f, g, l$1, u, p$1, e, w]; (_so = {}, _defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_so, a$1, m$1), o, y), d, x$1), t, c$1), i$1, I), n, b$1), h$1, F), s, v), f, S), g, A), _defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_so, l$1, P), u, j), p$1, B), e, N), w, k)); var io = { classic: { 900: "fas", 400: "far", normal: "far", 300: "fal", 100: "fat" }, duotone: { 900: "fad", 400: "fadr", 300: "fadl", 100: "fadt" }, sharp: { 900: "fass", 400: "fasr", 300: "fasl", 100: "fast" }, "sharp-duotone": { 900: "fasds", 400: "fasdr", 300: "fasdl", 100: "fasdt" }, slab: { 400: "faslr" }, "slab-press": { 400: "faslpr" }, whiteboard: { 600: "fawsb" }, thumbprint: { 300: "fatl" }, notdog: { 900: "fans" }, "notdog-duo": { 900: "fands" }, etch: { 900: "faes" }, chisel: { 400: "facr" }, jelly: { 400: "fajr" }, "jelly-fill": { 400: "fajfr" }, "jelly-duo": { 400: "fajdr" } }; var Bo = { "Font Awesome 7 Free": { 900: "fas", 400: "far" }, "Font Awesome 7 Pro": { 900: "fas", 400: "far", normal: "far", 300: "fal", 100: "fat" }, "Font Awesome 7 Brands": { 400: "fab", normal: "fab" }, "Font Awesome 7 Duotone": { 900: "fad", 400: "fadr", normal: "fadr", 300: "fadl", 100: "fadt" }, "Font Awesome 7 Sharp": { 900: "fass", 400: "fasr", normal: "fasr", 300: "fasl", 100: "fast" }, "Font Awesome 7 Sharp Duotone": { 900: "fasds", 400: "fasdr", normal: "fasdr", 300: "fasdl", 100: "fasdt" }, "Font Awesome 7 Jelly": { 400: "fajr", normal: "fajr" }, "Font Awesome 7 Jelly Fill": { 400: "fajfr", normal: "fajfr" }, "Font Awesome 7 Jelly Duo": { 400: "fajdr", normal: "fajdr" }, "Font Awesome 7 Slab": { 400: "faslr", normal: "faslr" }, "Font Awesome 7 Slab Press": { 400: "faslpr", normal: "faslpr" }, "Font Awesome 7 Thumbprint": { 300: "fatl", normal: "fatl" }, "Font Awesome 7 Notdog": { 900: "fans", normal: "fans" }, "Font Awesome 7 Notdog Duo": { 900: "fands", normal: "fands" }, "Font Awesome 7 Etch": { 900: "faes", normal: "faes" }, "Font Awesome 7 Chisel": { 400: "facr", normal: "facr" }, "Font Awesome 7 Whiteboard": { 600: "fawsb", normal: "fawsb" } }; var Co = new Map([["classic", { defaultShortPrefixId: "fas", defaultStyleId: "solid", styleIds: ["solid", "regular", "light", "thin", "brands"], futureStyleIds: [], defaultFontWeight: 900 }], ["duotone", { defaultShortPrefixId: "fad", defaultStyleId: "solid", styleIds: ["solid", "regular", "light", "thin"], futureStyleIds: [], defaultFontWeight: 900 }], ["sharp", { defaultShortPrefixId: "fass", defaultStyleId: "solid", styleIds: ["solid", "regular", "light", "thin"], futureStyleIds: [], defaultFontWeight: 900 }], ["sharp-duotone", { defaultShortPrefixId: "fasds", defaultStyleId: "solid", styleIds: ["solid", "regular", "light", "thin"], futureStyleIds: [], defaultFontWeight: 900 }], ["chisel", { defaultShortPrefixId: "facr", defaultStyleId: "regular", styleIds: ["regular"], futureStyleIds: [], defaultFontWeight: 400 }], ["etch", { defaultShortPrefixId: "faes", defaultStyleId: "solid", styleIds: ["solid"], futureStyleIds: [], defaultFontWeight: 900 }], ["jelly", { defaultShortPrefixId: "fajr", defaultStyleId: "regular", styleIds: ["regular"], futureStyleIds: [], defaultFontWeight: 400 }], ["jelly-duo", { defaultShortPrefixId: "fajdr", defaultStyleId: "regular", styleIds: ["regular"], futureStyleIds: [], defaultFontWeight: 400 }], ["jelly-fill", { defaultShortPrefixId: "fajfr", defaultStyleId: "regular", styleIds: ["regular"], futureStyleIds: [], defaultFontWeight: 400 }], ["notdog", { defaultShortPrefixId: "fans", defaultStyleId: "solid", styleIds: ["solid"], futureStyleIds: [], defaultFontWeight: 900 }], ["notdog-duo", { defaultShortPrefixId: "fands", defaultStyleId: "solid", styleIds: ["solid"], futureStyleIds: [], defaultFontWeight: 900 }], ["slab", { defaultShortPrefixId: "faslr", defaultStyleId: "regular", styleIds: ["regular"], futureStyleIds: [], defaultFontWeight: 400 }], ["slab-press", { defaultShortPrefixId: "faslpr", defaultStyleId: "regular", styleIds: ["regular"], futureStyleIds: [], defaultFontWeight: 400 }], ["thumbprint", { defaultShortPrefixId: "fatl", defaultStyleId: "light", styleIds: ["light"], futureStyleIds: [], defaultFontWeight: 300 }], ["whiteboard", { defaultShortPrefixId: "fawsb", defaultStyleId: "semibold", styleIds: ["semibold"], futureStyleIds: [], defaultFontWeight: 600 }]]), Ro = { chisel: { regular: "facr" }, classic: { brands: "fab", light: "fal", regular: "far", solid: "fas", thin: "fat" }, duotone: { light: "fadl", regular: "fadr", solid: "fad", thin: "fadt" }, etch: { solid: "faes" }, jelly: { regular: "fajr" }, "jelly-duo": { regular: "fajdr" }, "jelly-fill": { regular: "fajfr" }, notdog: { solid: "fans" }, "notdog-duo": { solid: "fands" }, sharp: { light: "fasl", regular: "fasr", solid: "fass", thin: "fast" }, "sharp-duotone": { light: "fasdl", regular: "fasdr", solid: "fasds", thin: "fasdt" }, slab: { regular: "faslr" }, "slab-press": { regular: "faslpr" }, thumbprint: { light: "fatl" }, whiteboard: { semibold: "fawsb" } }; var zo = ["fak", "fa-kit", "fakd", "fa-kit-duotone"], Oo = { kit: { fak: "kit", "fa-kit": "kit" }, "kit-duotone": { fakd: "kit-duotone", "fa-kit-duotone": "kit-duotone" } }, Go = ["kit"]; var D = "kit", r = "kit-duotone", T = "Kit", C = "Kit Duotone"; _defineProperty$1(_defineProperty$1({}, D, T), r, C); var Xo = { kit: { "fa-kit": "fak" }}; var lt = { "Font Awesome Kit": { 400: "fak", normal: "fak" }, "Font Awesome Kit Duotone": { 400: "fakd", normal: "fakd" } }, et = { kit: { fak: "fa-kit" }}; var dt = { kit: { kit: "fak" }, "kit-duotone": { "kit-duotone": "fakd" } }; var _fl; var l$1$1 = { GROUP: "duotone-group", SWAP_OPACITY: "swap-opacity", PRIMARY: "primary", SECONDARY: "secondary" }, i$1$1 = ["fa-classic", "fa-duotone", "fa-sharp", "fa-sharp-duotone", "fa-thumbprint", "fa-whiteboard", "fa-notdog", "fa-notdog-duo", "fa-chisel", "fa-etch", "fa-jelly", "fa-jelly-fill", "fa-jelly-duo", "fa-slab", "fa-slab-press"]; var f$1 = "classic", a$1$1 = "duotone", n$1 = "sharp", t$1 = "sharp-duotone", h$1$1 = "chisel", g$1 = "etch", u$1 = "jelly", s$1 = "jelly-duo", p$1$1 = "jelly-fill", y$1 = "notdog", e$1 = "notdog-duo", m$1$1 = "slab", c$1$1 = "slab-press", r$1 = "thumbprint", w$1 = "whiteboard", x$1$1 = "Classic", I$1 = "Duotone", b$1$1 = "Sharp", F$1 = "Sharp Duotone", v$1 = "Chisel", S$1 = "Etch", A$1 = "Jelly", j$1 = "Jelly Duo", P$1 = "Jelly Fill", B$1 = "Notdog", k$1 = "Notdog Duo", N$1 = "Slab", D$1 = "Slab Press", C$1 = "Thumbprint", T$1 = "Whiteboard"; (_fl = {}, _defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_fl, f$1, x$1$1), a$1$1, I$1), n$1, b$1$1), t$1, F$1), h$1$1, v$1), g$1, S$1), u$1, A$1), s$1, j$1), p$1$1, P$1), y$1, B$1), _defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_fl, e$1, k$1), m$1$1, N$1), c$1$1, D$1), r$1, C$1), w$1, T$1)); var L = "kit", d$1 = "kit-duotone", R$1 = "Kit", W$1 = "Kit Duotone"; _defineProperty$1(_defineProperty$1({}, L, R$1), d$1, W$1); var zo$1 = { classic: { "fa-brands": "fab", "fa-duotone": "fad", "fa-light": "fal", "fa-regular": "far", "fa-solid": "fas", "fa-thin": "fat" }, duotone: { "fa-regular": "fadr", "fa-light": "fadl", "fa-thin": "fadt" }, sharp: { "fa-solid": "fass", "fa-regular": "fasr", "fa-light": "fasl", "fa-thin": "fast" }, "sharp-duotone": { "fa-solid": "fasds", "fa-regular": "fasdr", "fa-light": "fasdl", "fa-thin": "fasdt" }, slab: { "fa-regular": "faslr" }, "slab-press": { "fa-regular": "faslpr" }, whiteboard: { "fa-semibold": "fawsb" }, thumbprint: { "fa-light": "fatl" }, notdog: { "fa-solid": "fans" }, "notdog-duo": { "fa-solid": "fands" }, etch: { "fa-solid": "faes" }, jelly: { "fa-regular": "fajr" }, "jelly-fill": { "fa-regular": "fajfr" }, "jelly-duo": { "fa-regular": "fajdr" }, chisel: { "fa-regular": "facr" } }, J$1 = { classic: ["fas", "far", "fal", "fat", "fad"], duotone: ["fadr", "fadl", "fadt"], sharp: ["fass", "fasr", "fasl", "fast"], "sharp-duotone": ["fasds", "fasdr", "fasdl", "fasdt"], slab: ["faslr"], "slab-press": ["faslpr"], whiteboard: ["fawsb"], thumbprint: ["fatl"], notdog: ["fans"], "notdog-duo": ["fands"], etch: ["faes"], jelly: ["fajr"], "jelly-fill": ["fajfr"], "jelly-duo": ["fajdr"], chisel: ["facr"] }, Go$1 = { classic: { fab: "fa-brands", fad: "fa-duotone", fal: "fa-light", far: "fa-regular", fas: "fa-solid", fat: "fa-thin" }, duotone: { fadr: "fa-regular", fadl: "fa-light", fadt: "fa-thin" }, sharp: { fass: "fa-solid", fasr: "fa-regular", fasl: "fa-light", fast: "fa-thin" }, "sharp-duotone": { fasds: "fa-solid", fasdr: "fa-regular", fasdl: "fa-light", fasdt: "fa-thin" }, slab: { faslr: "fa-regular" }, "slab-press": { faslpr: "fa-regular" }, whiteboard: { fawsb: "fa-semibold" }, thumbprint: { fatl: "fa-light" }, notdog: { fans: "fa-solid" }, "notdog-duo": { fands: "fa-solid" }, etch: { faes: "fa-solid" }, jelly: { fajr: "fa-regular" }, "jelly-fill": { fajfr: "fa-regular" }, "jelly-duo": { fajdr: "fa-regular" }, chisel: { facr: "fa-regular" } }, E$1 = ["fa-solid", "fa-regular", "fa-light", "fa-thin", "fa-duotone", "fa-brands", "fa-semibold"], $o$1 = ["fa", "fas", "far", "fal", "fat", "fad", "fadr", "fadl", "fadt", "fab", "fass", "fasr", "fasl", "fast", "fasds", "fasdr", "fasdl", "fasdt", "faslr", "faslpr", "fawsb", "fatl", "fans", "fands", "faes", "fajr", "fajfr", "fajdr", "facr"].concat(i$1$1, E$1), _$1 = ["solid", "regular", "light", "thin", "duotone", "brands", "semibold"], K$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], M$1 = K$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]), O$1 = ["aw", "fw", "pull-left", "pull-right"], Ho$1 = [].concat(_toConsumableArray$1(Object.keys(J$1)), _$1, O$1, ["2xs", "xs", "sm", "lg", "xl", "2xl", "beat", "border", "fade", "beat-fade", "bounce", "flip-both", "flip-horizontal", "flip-vertical", "flip", "inverse", "layers", "layers-bottom-left", "layers-bottom-right", "layers-counter", "layers-text", "layers-top-left", "layers-top-right", "li", "pull-end", "pull-start", "pulse", "rotate-180", "rotate-270", "rotate-90", "rotate-by", "shake", "spin-pulse", "spin-reverse", "spin", "stack-1x", "stack-2x", "stack", "ul", "width-auto", "width-fixed", l$1$1.GROUP, l$1$1.SWAP_OPACITY, l$1$1.PRIMARY, l$1$1.SECONDARY]).concat(K$1.map(function (o) { return "".concat(o, "x"); })).concat(M$1.map(function (o) { return "w-".concat(o); })); var oa = { "Font Awesome 5 Free": { 900: "fas", 400: "far" }, "Font Awesome 5 Pro": { 900: "fas", 400: "far", normal: "far", 300: "fal" }, "Font Awesome 5 Brands": { 400: "fab", normal: "fab" }, "Font Awesome 5 Duotone": { 900: "fad" } }; var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var UNITS_IN_GRID = 16; var DEFAULT_CSS_PREFIX = 'fa'; var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa'; var DATA_FA_I2SVG = 'data-fa-i2svg'; var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element'; var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending'; var DATA_PREFIX = 'data-prefix'; var DATA_ICON = 'data-icon'; var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg'; var MUTATION_APPROACH_ASYNC = 'async'; var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT']; var PSEUDO_ELEMENTS = ['::before', '::after', ':before', ':after']; var PRODUCTION$1 = function () { try { return process.env.NODE_ENV === 'production'; } catch (e$$1) { return false; } }(); function familyProxy(obj) { // Defaults to the classic family if family is not available return new Proxy(obj, { get: function get(target, prop) { return prop in target ? target[prop] : target[a$1]; } }); } var _PREFIX_TO_STYLE = _objectSpread2$1({}, z); // We changed FACSSClassesToStyleId in the icons repo to be canonical and as such, "classic" family does not have any // duotone styles. But we do still need duotone in _PREFIX_TO_STYLE below, so we are manually adding // {'fa-duotone': 'duotone'} _PREFIX_TO_STYLE[a$1] = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, { 'fa-duotone': 'duotone' }), z[a$1]), Oo['kit']), Oo['kit-duotone']); var PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE); var _STYLE_TO_PREFIX = _objectSpread2$1({}, Ro); // We changed FAStyleIdToShortPrefixId in the icons repo to be canonical and as such, "classic" family does not have any // duotone styles. But we do still need duotone in _STYLE_TO_PREFIX below, so we are manually adding {duotone: 'fad'} _STYLE_TO_PREFIX[a$1] = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, { duotone: 'fad' }), _STYLE_TO_PREFIX[a$1]), dt['kit']), dt['kit-duotone']); var STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX); var _PREFIX_TO_LONG_STYLE = _objectSpread2$1({}, Go$1); _PREFIX_TO_LONG_STYLE[a$1] = _objectSpread2$1(_objectSpread2$1({}, _PREFIX_TO_LONG_STYLE[a$1]), et['kit']); var PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE); var _LONG_STYLE_TO_PREFIX = _objectSpread2$1({}, zo$1); _LONG_STYLE_TO_PREFIX[a$1] = _objectSpread2$1(_objectSpread2$1({}, _LONG_STYLE_TO_PREFIX[a$1]), Xo['kit']); familyProxy(_LONG_STYLE_TO_PREFIX); var ICON_SELECTION_SYNTAX_PATTERN = K; var LAYERS_TEXT_CLASSNAME = 'fa-layers-text'; var FONT_FAMILY_PATTERN = W; var _FONT_WEIGHT_TO_PREFIX = _objectSpread2$1({}, io); familyProxy(_FONT_WEIGHT_TO_PREFIX); var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask']; var DUOTONE_CLASSES = O; var RESERVED_CLASSES = [].concat(_toConsumableArray$1(Go), _toConsumableArray$1(Ho$1)); var initial = WINDOW.FontAwesomeConfig || {}; function getAttrConfig(attr) { var element = DOCUMENT.querySelector('script[' + attr + ']'); if (element) { return element.getAttribute(attr); } } function coerce(val) { // Getting an empty string will occur if the attribute is set on the HTML tag but without a value // We'll assume that this is an indication that it should be toggled to true if (val === '') return true; if (val === 'false') return false; if (val === 'true') return true; return val; } if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') { var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-search-pseudo-elements-warnings', 'searchPseudoElementsWarnings'], ['data-search-pseudo-elements-full-scan', 'searchPseudoElementsFullScan'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']]; attrs.forEach(function (_ref) { var _ref2 = _slicedToArray$1(_ref, 2), attr = _ref2[0], key = _ref2[1]; var val = coerce(getAttrConfig(attr)); if (val !== undefined && val !== null) { initial[key] = val; } }); } var _default = { styleDefault: 'solid', familyDefault: a$1, cssPrefix: DEFAULT_CSS_PREFIX, replacementClass: DEFAULT_REPLACEMENT_CLASS, autoReplaceSvg: true, autoAddCss: true, searchPseudoElements: false, searchPseudoElementsWarnings: true, searchPseudoElementsFullScan: false, observeMutations: true, mutateApproach: 'async', keepOriginalSource: true, measurePerformance: false, showMissingIcons: true }; // familyPrefix is deprecated but we must still support it if present if (initial.familyPrefix) { initial.cssPrefix = initial.familyPrefix; } var _config = _objectSpread2$1(_objectSpread2$1({}, _default), initial); if (!_config.autoReplaceSvg) _config.observeMutations = false; var config = {}; Object.keys(_default).forEach(function (key) { Object.defineProperty(config, key, { enumerable: true, set: function set(val) { _config[key] = val; _onChangeCb.forEach(function (cb) { return cb(config); }); }, get: function get() { return _config[key]; } }); }); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0 Object.defineProperty(config, 'familyPrefix', { enumerable: true, set: function set(val) { _config.cssPrefix = val; _onChangeCb.forEach(function (cb) { return cb(config); }); }, get: function get() { return _config.cssPrefix; } }); WINDOW.FontAwesomeConfig = config; var _onChangeCb = []; function onChange(cb) { _onChangeCb.push(cb); return function () { _onChangeCb.splice(_onChangeCb.indexOf(cb), 1); }; } var d$2 = UNITS_IN_GRID; var meaninglessTransform = { size: 16, x: 0, y: 0, rotate: 0, flipX: false, flipY: false }; function insertCss(css) { if (!css || !IS_DOM) { return; } var style = DOCUMENT.createElement('style'); style.setAttribute('type', 'text/css'); style.innerHTML = css; var headChildren = DOCUMENT.head.childNodes; var beforeChild = null; for (var i = headChildren.length - 1; i > -1; i--) { var child = headChildren[i]; var tagName = (child.tagName || '').toUpperCase(); if (['STYLE', 'LINK'].indexOf(tagName) > -1) { beforeChild = child; } } DOCUMENT.head.insertBefore(style, beforeChild); return css; } var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; function nextUniqueId() { var size = 12; var id = ''; while (size-- > 0) { id += idPool[Math.random() * 62 | 0]; } return id; } function toArray(obj) { var array = []; for (var i = (obj || []).length >>> 0; i--;) { array[i] = obj[i]; } return array; } function classArray(node) { if (node.classList) { return toArray(node.classList); } else { return (node.getAttribute('class') || '').split(' ').filter(function (i) { return i; }); } } function htmlEscape(str) { return "".concat(str).replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;'); } function joinAttributes(attributes) { return Object.keys(attributes || {}).reduce(function (acc, attributeName) { return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" "); }, '').trim(); } function joinStyles(styles) { return Object.keys(styles || {}).reduce(function (acc, styleName) { return acc + "".concat(styleName, ": ").concat(styles[styleName].trim(), ";"); }, ''); } function transformIsMeaningful(transform) { return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY; } function transformForSvg(_ref) { var transform = _ref.transform, containerWidth = _ref.containerWidth, iconWidth = _ref.iconWidth; var outer = { transform: "translate(".concat(containerWidth / 2, " 256)") }; var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); var inner = { transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) }; var path = { transform: "translate(".concat(iconWidth / 2 * -1, " -256)") }; return { outer: outer, inner: inner, path: path }; } function transformForCss(_ref2) { var transform = _ref2.transform, _ref2$width = _ref2.width, width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width, _ref2$height = _ref2.height, height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height; var val = ''; if (IS_IE) { val += "translate(".concat(transform.x / d$2 - width / 2, "em, ").concat(transform.y / d$2 - height / 2, "em) "); } else { val += "translate(calc(-50% + ".concat(transform.x / d$2, "em), calc(-50% + ").concat(transform.y / d$2, "em)) "); } val += "scale(".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), ") "); val += "rotate(".concat(transform.rotate, "deg) "); return val; } var baseStyles = ":root, :host {\n --fa-font-solid: normal 900 1em/1 \"Font Awesome 7 Free\";\n --fa-font-regular: normal 400 1em/1 \"Font Awesome 7 Free\";\n --fa-font-light: normal 300 1em/1 \"Font Awesome 7 Pro\";\n --fa-font-thin: normal 100 1em/1 \"Font Awesome 7 Pro\";\n --fa-font-duotone: normal 900 1em/1 \"Font Awesome 7 Duotone\";\n --fa-font-duotone-regular: normal 400 1em/1 \"Font Awesome 7 Duotone\";\n --fa-font-duotone-light: normal 300 1em/1 \"Font Awesome 7 Duotone\";\n --fa-font-duotone-thin: normal 100 1em/1 \"Font Awesome 7 Duotone\";\n --fa-font-brands: normal 400 1em/1 \"Font Awesome 7 Brands\";\n --fa-font-sharp-solid: normal 900 1em/1 \"Font Awesome 7 Sharp\";\n --fa-font-sharp-regular: normal 400 1em/1 \"Font Awesome 7 Sharp\";\n --fa-font-sharp-light: normal 300 1em/1 \"Font Awesome 7 Sharp\";\n --fa-font-sharp-thin: normal 100 1em/1 \"Font Awesome 7 Sharp\";\n --fa-font-sharp-duotone-solid: normal 900 1em/1 \"Font Awesome 7 Sharp Duotone\";\n --fa-font-sharp-duotone-regular: normal 400 1em/1 \"Font Awesome 7 Sharp Duotone\";\n --fa-font-sharp-duotone-light: normal 300 1em/1 \"Font Awesome 7 Sharp Duotone\";\n --fa-font-sharp-duotone-thin: normal 100 1em/1 \"Font Awesome 7 Sharp Duotone\";\n --fa-font-slab-regular: normal 400 1em/1 \"Font Awesome 7 Slab\";\n --fa-font-slab-press-regular: normal 400 1em/1 \"Font Awesome 7 Slab Press\";\n --fa-font-whiteboard-semibold: normal 600 1em/1 \"Font Awesome 7 Whiteboard\";\n --fa-font-thumbprint-light: normal 300 1em/1 \"Font Awesome 7 Thumbprint\";\n --fa-font-notdog-solid: normal 900 1em/1 \"Font Awesome 7 Notdog\";\n --fa-font-notdog-duo-solid: normal 900 1em/1 \"Font Awesome 7 Notdog Duo\";\n --fa-font-etch-solid: normal 900 1em/1 \"Font Awesome 7 Etch\";\n --fa-font-jelly-regular: normal 400 1em/1 \"Font Awesome 7 Jelly\";\n --fa-font-jelly-fill-regular: normal 400 1em/1 \"Font Awesome 7 Jelly Fill\";\n --fa-font-jelly-duo-regular: normal 400 1em/1 \"Font Awesome 7 Jelly Duo\";\n --fa-font-chisel-regular: normal 400 1em/1 \"Font Awesome 7 Chisel\";\n}\n\n.svg-inline--fa {\n box-sizing: content-box;\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n width: var(--fa-width, 1.25em);\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285714em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left,\n.svg-inline--fa .fa-pull-start {\n float: inline-start;\n margin-inline-end: var(--fa-pull-margin, 0.3em);\n}\n.svg-inline--fa.fa-pull-right,\n.svg-inline--fa .fa-pull-end {\n float: inline-end;\n margin-inline-start: var(--fa-pull-margin, 0.3em);\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n inset-inline-start: calc(-1 * var(--fa-li-width, 2em));\n inset-block-start: 0.25em; /* syncing vertical alignment with Web Font rendering */\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: var(--fa-width, 1.25em);\n}\n.fa-layers .svg-inline--fa {\n inset: 0;\n margin: auto;\n position: absolute;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n transform: scale(var(--fa-counter-scale, 0.25));\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: calc(10 / 16 * 1em); /* converts a 10px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 10 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 10 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-xs {\n font-size: calc(12 / 16 * 1em); /* converts a 12px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 12 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 12 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-sm {\n font-size: calc(14 / 16 * 1em); /* converts a 14px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 14 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 14 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-lg {\n font-size: calc(20 / 16 * 1em); /* converts a 20px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 20 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 20 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-xl {\n font-size: calc(24 / 16 * 1em); /* converts a 24px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 24 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 24 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-2xl {\n font-size: calc(32 / 16 * 1em); /* converts a 32px size into an em-based value that's relative to the scale's 16px base */\n line-height: calc(1 / 32 * 1em); /* sets the line-height of the icon back to that of it's parent */\n vertical-align: calc((6 / 32 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\n}\n\n.fa-width-auto {\n --fa-width: auto;\n}\n\n.fa-fw,\n.fa-width-fixed {\n --fa-width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-inline-start: var(--fa-li-margin, 2.5em);\n padding-inline-start: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n inset-inline-start: calc(-1 * var(--fa-li-width, 2em));\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n/* Heads Up: Bordered Icons will not be supported in the future!\n - This feature will be deprecated in the next major release of Font Awesome (v8)!\n - You may continue to use it in this version *v7), but it will not be supported in Font Awesome v8.\n*/\n/* Notes:\n* --@{v.$css-prefix}-border-width = 1/16 by default (to render as ~1px based on a 16px default font-size)\n* --@{v.$css-prefix}-border-padding =\n ** 3/16 for vertical padding (to give ~2px of vertical whitespace around an icon considering it's vertical alignment)\n ** 4/16 for horizontal padding (to give ~4px of horizontal whitespace around an icon)\n*/\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.0625em);\n box-sizing: var(--fa-border-box-sizing, content-box);\n padding: var(--fa-border-padding, 0.1875em 0.25em);\n}\n\n.fa-pull-left,\n.fa-pull-start {\n float: inline-start;\n margin-inline-end: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right,\n.fa-pull-end {\n float: inline-end;\n margin-inline-start: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n animation-name: fa-beat;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n animation-name: fa-bounce;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n animation-name: fa-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n animation-name: fa-beat-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n animation-name: fa-flip;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n animation-name: fa-shake;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n animation-name: fa-spin;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 2s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n animation-name: fa-spin;\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n .fa-bounce,\n .fa-fade,\n .fa-beat-fade,\n .fa-flip,\n .fa-pulse,\n .fa-shake,\n .fa-spin,\n .fa-spin-pulse {\n animation: none !important;\n transition: none !important;\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n transform: scale(1);\n }\n 45% {\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-bounce {\n 0% {\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-flip {\n 50% {\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-shake {\n 0% {\n transform: rotate(-15deg);\n }\n 4% {\n transform: rotate(15deg);\n }\n 8%, 24% {\n transform: rotate(-18deg);\n }\n 12%, 28% {\n transform: rotate(18deg);\n }\n 16% {\n transform: rotate(-22deg);\n }\n 20% {\n transform: rotate(22deg);\n }\n 32% {\n transform: rotate(-12deg);\n }\n 36% {\n transform: rotate(12deg);\n }\n 40%, 100% {\n transform: rotate(0deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n transform: rotate(var(--fa-rotate-angle, 0));\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-sw