{"version":3,"file":"FontPicker.js","sources":["../../node_modules/@samuelmeuli/font-manager/dist/index.es.js","../../src/FontPicker.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nvar __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\nfunction __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\nfunction __awaiter(thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __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;\r\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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}\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \"@charset \\\"UTF-8\\\";\\ndiv[id^=font-picker] {\\n position: relative;\\n display: inline-block;\\n width: 200px;\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);\\n}\\ndiv[id^=font-picker] * {\\n box-sizing: border-box;\\n}\\ndiv[id^=font-picker] p {\\n margin: 0;\\n padding: 0;\\n}\\ndiv[id^=font-picker] button {\\n color: inherit;\\n font-size: inherit;\\n background: none;\\n border: 0;\\n outline: none;\\n cursor: pointer;\\n}\\ndiv[id^=font-picker] .dropdown-button {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n width: 100%;\\n height: 35px;\\n padding: 0 10px;\\n background: #cbcbcb;\\n}\\ndiv[id^=font-picker] .dropdown-button:hover, div[id^=font-picker] .dropdown-button:focus {\\n background: #bebebe;\\n}\\ndiv[id^=font-picker] .dropdown-button .dropdown-font-name {\\n overflow: hidden;\\n white-space: nowrap;\\n}\\ndiv[id^=font-picker] .dropdown-icon {\\n margin-left: 10px;\\n}\\n@-webkit-keyframes spinner {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes spinner {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\ndiv[id^=font-picker] .dropdown-icon.loading::before {\\n display: block;\\n width: 10px;\\n height: 10px;\\n border: 2px solid #b2b2b2;\\n border-top-color: #000000;\\n border-radius: 50%;\\n -webkit-animation: spinner 0.6s linear infinite;\\n animation: spinner 0.6s linear infinite;\\n content: \\\"\\\";\\n}\\ndiv[id^=font-picker] .dropdown-icon.finished::before {\\n display: block;\\n width: 0;\\n height: 0;\\n margin: 0 2px;\\n border-top: 6px solid #000000;\\n border-right: 5px solid transparent;\\n border-left: 5px solid transparent;\\n transition: transform 0.3s;\\n content: \\\"\\\";\\n}\\ndiv[id^=font-picker] .dropdown-icon.error::before {\\n content: \\\"⚠\\\";\\n}\\ndiv[id^=font-picker].expanded .dropdown-icon.finished::before {\\n transform: rotate(-180deg);\\n}\\ndiv[id^=font-picker].expanded ul {\\n max-height: 200px;\\n}\\ndiv[id^=font-picker] ul {\\n position: absolute;\\n z-index: 1;\\n width: 100%;\\n max-height: 0;\\n margin: 0;\\n padding: 0;\\n overflow-x: hidden;\\n overflow-y: auto;\\n background: #eaeaea;\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);\\n transition: 0.3s;\\n -webkit-overflow-scrolling: touch;\\n}\\ndiv[id^=font-picker] ul li {\\n height: 35px;\\n list-style: none;\\n}\\ndiv[id^=font-picker] ul li button {\\n display: flex;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n padding: 0 10px;\\n white-space: nowrap;\\n}\\ndiv[id^=font-picker] ul li button:hover, div[id^=font-picker] ul li button:focus {\\n background: #dddddd;\\n}\\ndiv[id^=font-picker] ul li button.active-font {\\n background: #d1d1d1;\\n}\";\nstyleInject(css);\n\nfunction getFontId(fontFamily) {\n return fontFamily.replace(/\\s+/g, \"-\").toLowerCase();\n}\nfunction validatePickerId(pickerId) {\n if (pickerId.match(/[^0-9a-z]/i)) {\n throw Error(\"The `pickerId` parameter may only contain letters and digits\");\n }\n}\n\nfunction get(url) {\n return new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.overrideMimeType(\"application/json\");\n request.open(\"GET\", url, true);\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status !== 200) {\n reject(new Error(\"Response has status code \" + request.status));\n }\n else {\n resolve(request.responseText);\n }\n }\n };\n request.send();\n });\n}\n\nvar LIST_BASE_URL = \"https://www.googleapis.com/webfonts/v1/webfonts\";\nfunction getFontList(apiKey) {\n return __awaiter(this, void 0, void 0, function () {\n var url, response, json, fontsOriginal;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = new URL(LIST_BASE_URL);\n url.searchParams.append(\"sort\", \"popularity\");\n url.searchParams.append(\"key\", apiKey);\n return [4, get(url.href)];\n case 1:\n response = _a.sent();\n json = JSON.parse(response);\n fontsOriginal = json.items;\n return [2, fontsOriginal.map(function (fontOriginal) {\n var family = fontOriginal.family, subsets = fontOriginal.subsets, others = __rest(fontOriginal, [\"family\", \"subsets\"]);\n return __assign(__assign({}, others), { family: family, id: getFontId(family), scripts: subsets });\n })];\n }\n });\n });\n}\n\nvar previewFontsStylesheet = document.createElement(\"style\");\ndocument.head.appendChild(previewFontsStylesheet);\nfunction applyFontPreview(previewFont, selectorSuffix) {\n var fontId = getFontId(previewFont.family);\n var style = \"\\n\\t\\t\\t#font-button-\" + fontId + selectorSuffix + \" {\\n\\t\\t\\t\\tfont-family: \\\"\" + previewFont.family + \"\\\";\\n\\t\\t\\t}\\n\\t\\t\";\n previewFontsStylesheet.appendChild(document.createTextNode(style));\n}\nfunction getActiveFontStylesheet(selectorSuffix) {\n var stylesheetId = \"active-font-\" + selectorSuffix;\n var activeFontStylesheet = document.getElementById(stylesheetId);\n if (!activeFontStylesheet) {\n activeFontStylesheet = document.createElement(\"style\");\n activeFontStylesheet.id = stylesheetId;\n document.head.appendChild(activeFontStylesheet);\n }\n return activeFontStylesheet;\n}\nfunction applyActiveFont(activeFont, previousFontFamily, selectorSuffix) {\n var style = \"\\n\\t\\t.apply-font\" + selectorSuffix + \" {\\n\\t\\t\\tfont-family: \\\"\" + activeFont.family + \"\\\"\" + (previousFontFamily ? \", \\\"\" + previousFontFamily + \"\\\"\" : \"\") + \";\\n\\t\\t}\\n\\t\";\n var activeFontStylesheet = getActiveFontStylesheet(selectorSuffix);\n activeFontStylesheet.innerHTML = style;\n}\n\nvar PREVIEW_ATTRIBUTE_NAME = \"data-is-preview\";\nfunction getStylesheetId(fontId) {\n return \"font-\" + fontId;\n}\nfunction stylesheetExists(fontId, isPreview) {\n var stylesheetNode = document.getElementById(getStylesheetId(fontId));\n if (isPreview === null || isPreview === undefined) {\n return stylesheetNode !== null;\n }\n return (stylesheetNode !== null &&\n stylesheetNode.getAttribute(PREVIEW_ATTRIBUTE_NAME) === isPreview.toString());\n}\nfunction createStylesheet(fontId, isPreview) {\n var stylesheetNode = document.createElement(\"style\");\n stylesheetNode.id = getStylesheetId(fontId);\n stylesheetNode.setAttribute(PREVIEW_ATTRIBUTE_NAME, isPreview.toString());\n document.head.appendChild(stylesheetNode);\n}\nfunction fillStylesheet(fontId, styles) {\n var stylesheetId = getStylesheetId(fontId);\n var stylesheetNode = document.getElementById(stylesheetId);\n if (stylesheetNode) {\n stylesheetNode.textContent = styles;\n }\n else {\n console.error(\"Could not fill stylesheet: Stylesheet with ID \\\"\" + stylesheetId + \"\\\" not found\");\n }\n}\nfunction setStylesheetType(fontId, isPreview) {\n var stylesheetId = getStylesheetId(fontId);\n var stylesheetNode = document.getElementById(stylesheetId);\n if (stylesheetNode) {\n stylesheetNode.setAttribute(PREVIEW_ATTRIBUTE_NAME, isPreview.toString());\n }\n else {\n console.error(\"Could not change stylesheet type: Stylesheet with ID \\\"\" + stylesheetId + \"\\\" not found\");\n }\n}\n\nfunction getMatches(regex, str) {\n var matches = [];\n var match;\n do {\n match = regex.exec(str);\n if (match) {\n matches.push(match[1]);\n }\n } while (match);\n return matches;\n}\n\nvar FONT_FACE_REGEX = /@font-face {([\\s\\S]*?)}/gm;\nvar FONT_FAMILY_REGEX = /font-family: ['\"](.*?)['\"]/gm;\nfunction extractFontStyles(allFontStyles) {\n var rules = getMatches(FONT_FACE_REGEX, allFontStyles);\n var fontStyles = {};\n rules.forEach(function (rule) {\n var fontFamily = getMatches(FONT_FAMILY_REGEX, rule)[0];\n var fontId = getFontId(fontFamily);\n if (!(fontId in fontStyles)) {\n fontStyles[fontId] = \"\";\n }\n fontStyles[fontId] += \"@font-face {\\n\" + rule + \"\\n}\\n\\n\";\n });\n return fontStyles;\n}\n\nvar FONT_BASE_URL = \"https://fonts.googleapis.com/css\";\nfunction getStylesheet(fonts, scripts, variants, previewsOnly) {\n return __awaiter(this, void 0, void 0, function () {\n var url, variantsStr, familiesStr, familyNamesConcat, downloadChars;\n return __generator(this, function (_a) {\n url = new URL(FONT_BASE_URL);\n variantsStr = variants.join(\",\");\n familiesStr = fonts.map(function (font) { return font.family + \":\" + variantsStr; });\n url.searchParams.append(\"family\", familiesStr.join(\"|\"));\n url.searchParams.append(\"subset\", scripts.join(\",\"));\n if (previewsOnly) {\n familyNamesConcat = fonts.map(function (font) { return font.family; }).join(\"\");\n downloadChars = familyNamesConcat\n .split(\"\")\n .filter(function (char, pos, self) { return self.indexOf(char) === pos; })\n .join(\"\");\n url.searchParams.append(\"text\", downloadChars);\n }\n url.searchParams.append(\"font-display\", \"swap\");\n return [2, get(url.href)];\n });\n });\n}\n\nfunction loadFontPreviews(fonts, scripts, variants, selectorSuffix) {\n return __awaiter(this, void 0, void 0, function () {\n var fontsArray, fontsToFetch, response, fontStyles;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n fontsArray = Array.from(fonts.values());\n fontsToFetch = fontsArray\n .map(function (font) { return font.id; })\n .filter(function (fontId) { return !stylesheetExists(fontId); });\n fontsToFetch.forEach(function (fontId) { return createStylesheet(fontId, true); });\n return [4, getStylesheet(fontsArray, scripts, variants, true)];\n case 1:\n response = _a.sent();\n fontStyles = extractFontStyles(response);\n fontsArray.forEach(function (font) {\n applyFontPreview(font, selectorSuffix);\n if (fontsToFetch.includes(font.id)) {\n if (!(font.id in fontStyles)) {\n console.error(\"Missing styles for font \\\"\" + font.family + \"\\\" (fontId \\\"\" + font.id + \"\\\") in Google Fonts response\");\n return;\n }\n fillStylesheet(font.id, fontStyles[font.id]);\n }\n });\n return [2];\n }\n });\n });\n}\nfunction loadActiveFont(font, previousFontFamily, scripts, variants, selectorSuffix) {\n return __awaiter(this, void 0, void 0, function () {\n var fontStyle;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!stylesheetExists(font.id, false)) return [3, 1];\n applyActiveFont(font, previousFontFamily, selectorSuffix);\n return [3, 3];\n case 1:\n if (stylesheetExists(font.id, true)) {\n setStylesheetType(font.id, false);\n }\n else {\n createStylesheet(font.id, false);\n }\n return [4, getStylesheet([font], scripts, variants, false)];\n case 2:\n fontStyle = _a.sent();\n applyActiveFont(font, previousFontFamily, selectorSuffix);\n fillStylesheet(font.id, fontStyle);\n _a.label = 3;\n case 3: return [2];\n }\n });\n });\n}\n\nvar FONT_FAMILY_DEFAULT = \"Open Sans\";\nvar OPTIONS_DEFAULTS = {\n pickerId: \"\",\n families: [],\n categories: [],\n scripts: [\"latin\"],\n variants: [\"regular\"],\n filter: function () { return true; },\n limit: 50,\n sort: \"alphabet\",\n};\n\nvar FontManager = (function () {\n function FontManager(apiKey, defaultFamily, _a, onChange) {\n if (defaultFamily === void 0) { defaultFamily = FONT_FAMILY_DEFAULT; }\n var _b = _a.pickerId, pickerId = _b === void 0 ? OPTIONS_DEFAULTS.pickerId : _b, _c = _a.families, families = _c === void 0 ? OPTIONS_DEFAULTS.families : _c, _d = _a.categories, categories = _d === void 0 ? OPTIONS_DEFAULTS.categories : _d, _e = _a.scripts, scripts = _e === void 0 ? OPTIONS_DEFAULTS.scripts : _e, _f = _a.variants, variants = _f === void 0 ? OPTIONS_DEFAULTS.variants : _f, _g = _a.filter, filter = _g === void 0 ? OPTIONS_DEFAULTS.filter : _g, _h = _a.limit, limit = _h === void 0 ? OPTIONS_DEFAULTS.limit : _h, _j = _a.sort, sort = _j === void 0 ? OPTIONS_DEFAULTS.sort : _j;\n if (onChange === void 0) { onChange = function () { }; }\n this.fonts = new Map();\n validatePickerId(pickerId);\n this.selectorSuffix = pickerId ? \"-\" + pickerId : \"\";\n this.apiKey = apiKey;\n this.options = {\n pickerId: pickerId,\n families: families,\n categories: categories,\n scripts: scripts,\n variants: variants,\n filter: filter,\n limit: limit,\n sort: sort,\n };\n this.onChange = onChange;\n this.addFont(defaultFamily, false);\n this.setActiveFont(defaultFamily, false);\n }\n FontManager.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var fonts, _loop_1, this_1, i, state_1, fontsToLoad;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, getFontList(this.apiKey)];\n case 1:\n fonts = _a.sent();\n _loop_1 = function (i) {\n var font = fonts[i];\n if (this_1.fonts.size >= this_1.options.limit) {\n return \"break\";\n }\n if (!this_1.fonts.has(font.family) &&\n (this_1.options.families.length === 0 || this_1.options.families.includes(font.family)) &&\n (this_1.options.categories.length === 0 || this_1.options.categories.includes(font.category)) &&\n this_1.options.scripts.every(function (script) { return font.scripts.includes(script); }) &&\n this_1.options.variants.every(function (variant) { return font.variants.includes(variant); }) &&\n this_1.options.filter(font) === true) {\n this_1.fonts.set(font.family, font);\n }\n };\n this_1 = this;\n for (i = 0; i < fonts.length; i += 1) {\n state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n fontsToLoad = new Map(this.fonts);\n fontsToLoad[\"delete\"](this.activeFontFamily);\n loadFontPreviews(fontsToLoad, this.options.scripts, this.options.variants, this.selectorSuffix);\n return [2, this.fonts];\n }\n });\n });\n };\n FontManager.prototype.getFonts = function () {\n return this.fonts;\n };\n FontManager.prototype.addFont = function (fontFamily, downloadPreview) {\n if (downloadPreview === void 0) { downloadPreview = true; }\n var font = {\n family: fontFamily,\n id: getFontId(fontFamily),\n };\n this.fonts.set(fontFamily, font);\n if (downloadPreview) {\n var fontMap = new Map();\n fontMap.set(fontFamily, font);\n loadFontPreviews(fontMap, this.options.scripts, this.options.variants, this.selectorSuffix);\n }\n };\n FontManager.prototype.removeFont = function (fontFamily) {\n this.fonts[\"delete\"](fontFamily);\n };\n FontManager.prototype.getActiveFont = function () {\n var activeFont = this.fonts.get(this.activeFontFamily);\n if (!activeFont) {\n throw Error(\"Cannot get active font: \\\"\" + this.activeFontFamily + \"\\\" is not in the font list\");\n }\n else {\n return activeFont;\n }\n };\n FontManager.prototype.setActiveFont = function (fontFamily, runOnChange) {\n var _this = this;\n if (runOnChange === void 0) { runOnChange = true; }\n var previousFontFamily = this.activeFontFamily;\n var activeFont = this.fonts.get(fontFamily);\n if (!activeFont) {\n throw Error(\"Cannot update active font: \\\"\" + fontFamily + \"\\\" is not in the font list\");\n }\n this.activeFontFamily = fontFamily;\n loadActiveFont(activeFont, previousFontFamily, this.options.scripts, this.options.variants, this.selectorSuffix).then(function () {\n if (runOnChange) {\n _this.onChange(activeFont);\n }\n });\n };\n FontManager.prototype.setOnChange = function (onChange) {\n this.onChange = onChange;\n };\n return FontManager;\n}());\n\nexport { FONT_FAMILY_DEFAULT, FontManager, OPTIONS_DEFAULTS, getFontId };\n","import {\n\tFont,\n\tFONT_FAMILY_DEFAULT,\n\tFontList,\n\tFontManager,\n\tgetFontId,\n\tOptions,\n\tOPTIONS_DEFAULTS,\n\tSortOption,\n} from \"@samuelmeuli/font-manager\";\n\n/**\n * Font picker user interface\n */\nexport default class FontPicker {\n\t// Button in the font list which contains and highlights the currently active font\n\tprivate activeFontButton: HTMLButtonElement;\n\n\t//

element in the dropdownButton containing the name of the currently active font\n\tprivate dropdownFamily: HTMLParagraphElement;\n\n\t// State of the font picker (expanded or collapsed)\n\tprivate expanded = false;\n\n\t// Instance of the FontManager class used for managing, downloading and applying fonts\n\tprivate fontManager: FontManager;\n\n\t//

element in which the font picker is rendered\n\tprivate fontPickerDiv: HTMLDivElement;\n\n\t// Font list which is shown below the dropdownButton if expanded === true\n\tprivate ul: HTMLUListElement;\n\n\t/**\n\t * Instantiate a FontManager object and generate the font picker HTML\n\t */\n\tconstructor(\n\t\tapiKey: string,\n\t\tdefaultFamily: string = FONT_FAMILY_DEFAULT,\n\t\t{\n\t\t\tpickerId = OPTIONS_DEFAULTS.pickerId,\n\t\t\tfamilies = OPTIONS_DEFAULTS.families,\n\t\t\tcategories = OPTIONS_DEFAULTS.categories,\n\t\t\tscripts = OPTIONS_DEFAULTS.scripts,\n\t\t\tvariants = OPTIONS_DEFAULTS.variants,\n\t\t\tfilter = OPTIONS_DEFAULTS.filter,\n\t\t\tlimit = OPTIONS_DEFAULTS.limit,\n\t\t\tsort = OPTIONS_DEFAULTS.sort,\n\t\t}: Partial,\n\t\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\t\tonChange: (font: Font) => void = (): void => {},\n\t) {\n\t\t// Function bindings\n\t\tthis.closeEventListener = this.closeEventListener.bind(this);\n\t\tthis.toggleExpanded = this.toggleExpanded.bind(this);\n\n\t\t// Initialize FontManager and FontPicker UI\n\t\tconst options = {\n\t\t\tpickerId,\n\t\t\tfamilies,\n\t\t\tcategories,\n\t\t\tscripts,\n\t\t\tvariants,\n\t\t\tfilter,\n\t\t\tlimit,\n\t\t\tsort,\n\t\t};\n\t\tthis.fontManager = new FontManager(apiKey, defaultFamily, options, onChange);\n\t\tthis.generateUI(sort);\n\t}\n\n\t/**\n\t * Download list of available fonts and generate the font picker HTML\n\t */\n\tprivate generateUI(sort: SortOption): void {\n\t\tconst { selectorSuffix } = this.fontManager;\n\t\tconst pickerId = `font-picker${selectorSuffix}`;\n\n\t\t// Locate
where font picker should be rendered\n\t\tthis.fontPickerDiv = document.getElementById(pickerId) as HTMLDivElement;\n\t\tif (!this.fontPickerDiv) {\n\t\t\tthrow Error(`Missing div with id=\"${pickerId}\"`);\n\t\t}\n\n\t\t// Generate HTML for dropdown button (contains family of active font and dropdown icon)\n\t\tconst dropdownButton = document.createElement(\"button\");\n\t\tdropdownButton.classList.add(\"dropdown-button\");\n\t\tdropdownButton.onclick = this.toggleExpanded;\n\t\tdropdownButton.onkeypress = this.toggleExpanded;\n\t\tdropdownButton.type = \"button\";\n\t\tthis.fontPickerDiv.appendChild(dropdownButton);\n\t\t// Font family of active font\n\t\tthis.dropdownFamily = document.createElement(\"p\");\n\t\tthis.dropdownFamily.textContent = this.fontManager.getActiveFont().family;\n\t\tthis.dropdownFamily.classList.add(\"dropdown-font-family\");\n\t\tdropdownButton.appendChild(this.dropdownFamily);\n\t\t// Dropdown icon (possible classes/states: \"loading\", \"finished\", \"error\")\n\t\tconst dropdownIcon = document.createElement(\"p\");\n\t\tdropdownIcon.classList.add(\"dropdown-icon\", \"loading\");\n\t\tdropdownButton.appendChild(dropdownIcon);\n\n\t\t// Fetch and render font list\n\t\tthis.fontManager\n\t\t\t.init()\n\t\t\t.then((fontMap: FontList): void => {\n\t\t\t\tconst fonts = Array.from(fontMap.values());\n\t\t\t\tif (sort === \"alphabet\") {\n\t\t\t\t\tfonts.sort((font1: Font, font2: Font): number =>\n\t\t\t\t\t\tfont1.family.localeCompare(font2.family),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthis.generateFontList(fonts);\n\t\t\t\tdropdownIcon.classList.replace(\"loading\", \"finished\");\n\t\t\t})\n\t\t\t.catch((err: Error): void => {\n\t\t\t\t// On error: Log error message\n\t\t\t\tdropdownIcon.classList.replace(\"loading\", \"error\");\n\t\t\t\tconsole.error(\"Error trying to fetch the list of available fonts\");\n\t\t\t\tconsole.error(err);\n\t\t\t});\n\t}\n\n\t/**\n\t * Generate
    with all font families below downloadButton\n\t */\n\tprivate generateFontList(fonts: Font[]): void {\n\t\t// Generate HTML for font list below dropdown button\n\t\tthis.ul = document.createElement(\"ul\");\n\t\tthis.ul.classList.add(\"font-list\");\n\n\t\t// Generate HTML for font list entries\n\t\tfonts.forEach((font): void => {\n\t\t\tthis.addFontLi(font);\n\t\t});\n\t\tthis.fontPickerDiv.appendChild(this.ul);\n\n\t\t// Highlight active font and save reference to the corresponding HTML element\n\t\tconst activeFontFamily = this.fontManager.getActiveFont().family;\n\t\tconst activeFontId = getFontId(activeFontFamily);\n\t\tconst fontButtonId = `font-button-${activeFontId}${this.fontManager.selectorSuffix}`;\n\t\tthis.activeFontButton = document.getElementById(fontButtonId) as HTMLButtonElement;\n\t\tif (this.activeFontButton) {\n\t\t\tthis.activeFontButton.classList.add(\"active-font\");\n\t\t} else {\n\t\t\tconsole.error(`Could not find font button with ID (${fontButtonId})`);\n\t\t}\n\t}\n\n\t/**\n\t * Generate list entry in font picker UI for the provided font. Highlight it if it's the active\n\t * font\n\t */\n\tprivate addFontLi(font: Font, listIndex?: number): void {\n\t\tconst fontId = getFontId(font.family);\n\t\tconst li = document.createElement(\"li\");\n\t\tli.classList.add(\"font-list-item\");\n\t\tconst fontButton = document.createElement(\"button\");\n\t\tfontButton.type = \"button\";\n\t\tfontButton.id = `font-button-${fontId}${this.fontManager.selectorSuffix}`;\n\t\tfontButton.classList.add(\"font-button\");\n\t\tfontButton.textContent = font.family;\n\n\t\t// Update active font when font button is clicked\n\t\tconst onActivate = (): void => {\n\t\t\tthis.toggleExpanded();\n\t\t\tthis.setActiveFont(font.family);\n\t\t};\n\t\tfontButton.onclick = onActivate;\n\t\tfontButton.onkeypress = onActivate;\n\t\tli.appendChild(fontButton);\n\n\t\t// Insert font button at the specified index. If not specified, append to the end of the list\n\t\tif (listIndex) {\n\t\t\tthis.ul.insertBefore(li, this.ul.children[listIndex]);\n\t\t} else {\n\t\t\tthis.ul.appendChild(li);\n\t\t}\n\t}\n\n\t/**\n\t * EventListener for closing the font picker when clicking anywhere outside it\n\t */\n\tprivate closeEventListener(e: MouseEvent): void {\n\t\tlet targetEl = e.target as Node; // Clicked element\n\t\tconst fontPickerEl = document.getElementById(`font-picker${this.fontManager.selectorSuffix}`);\n\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\tif (targetEl === fontPickerEl) {\n\t\t\t\t// Click inside font picker: Exit\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (targetEl.parentNode) {\n\t\t\t\t// Click outside font picker: Move up the DOM\n\t\t\t\ttargetEl = targetEl.parentNode;\n\t\t\t} else {\n\t\t\t\t// DOM root is reached: Toggle picker, exit\n\t\t\t\tthis.toggleExpanded();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Expand/collapse the picker's font list\n\t */\n\tprivate toggleExpanded(): void {\n\t\tif (this.expanded) {\n\t\t\tthis.expanded = false;\n\t\t\tthis.fontPickerDiv.classList.remove(\"expanded\");\n\t\t\tdocument.removeEventListener(\"click\", this.closeEventListener as EventListener);\n\t\t} else {\n\t\t\tthis.expanded = true;\n\t\t\tthis.fontPickerDiv.classList.add(\"expanded\");\n\t\t\tdocument.addEventListener(\"click\", this.closeEventListener as EventListener);\n\t\t}\n\t}\n\n\t/**\n\t * @see FontManager\n\t */\n\tpublic getFonts(): FontList {\n\t\treturn this.fontManager.getFonts();\n\t}\n\n\t/**\n\t * Add font to font picker and font map\n\t */\n\tpublic addFont(fontFamily: string, index?: number): void {\n\t\tif (Array.from(this.fontManager.getFonts().keys()).includes(fontFamily)) {\n\t\t\tthrow Error(\n\t\t\t\t`Did not add font to font picker: Font family \"${fontFamily}\" is already in the list`,\n\t\t\t);\n\t\t}\n\n\t\t// Add font to font map in FontManager\n\t\tthis.fontManager.addFont(fontFamily, true);\n\n\t\t// Add font to list in font picker\n\t\tconst font = this.fontManager.getFonts().get(fontFamily);\n\t\tif (font) {\n\t\t\tthis.addFontLi(font, index);\n\t\t} else {\n\t\t\tconsole.error(`Font \"${fontFamily}\" is missing in font list`);\n\t\t}\n\t}\n\n\t/**\n\t * Remove font from font picker and font map\n\t */\n\tpublic removeFont(fontFamily: string): void {\n\t\t// Remove font from font map in FontManager\n\t\tthis.fontManager.removeFont(fontFamily);\n\n\t\t// Remove font from list in font picker\n\t\tconst fontId = getFontId(fontFamily);\n\t\tconst fontButton = document.getElementById(\n\t\t\t`font-button-${fontId}${this.fontManager.selectorSuffix}`,\n\t\t);\n\t\tif (fontButton) {\n\t\t\tconst fontLi = fontButton.parentElement;\n\t\t\tfontButton.remove();\n\t\t\tif (fontLi) {\n\t\t\t\tfontLi.remove();\n\t\t\t}\n\t\t} else {\n\t\t\tthrow Error(\n\t\t\t\t`Could not remove font from font picker: Font family \"${fontFamily}\" is not in the list`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @see FontManager\n\t */\n\tpublic getActiveFont(): Font {\n\t\treturn this.fontManager.getActiveFont();\n\t}\n\n\t/**\n\t * Set the specified font as the active font, download it and highlight it in the font list\n\t */\n\tpublic setActiveFont(fontFamily: string): void {\n\t\tthis.fontManager.setActiveFont(fontFamily);\n\t\tconst fontId = getFontId(fontFamily);\n\n\t\t// Write new font family in dropdown button and highlight font entry in the list\n\t\tthis.dropdownFamily.textContent = fontFamily;\n\t\tif (this.activeFontButton) {\n\t\t\tthis.activeFontButton.classList.remove(\"active-font\");\n\t\t\tthis.activeFontButton = document.getElementById(\n\t\t\t\t`font-button-${fontId}${this.fontManager.selectorSuffix}`,\n\t\t\t) as HTMLButtonElement;\n\t\t\tthis.activeFontButton.classList.add(\"active-font\");\n\t\t} else {\n\t\t\tconsole.error(\"`activeFontButton` is undefined\");\n\t\t}\n\t}\n\n\t/**\n\t * Update the onChange function (executed when changing the active font)\n\t */\n\tpublic setOnChange(onChange: (font: Font) => void): void {\n\t\tthis.fontManager.setOnChange(onChange);\n\t}\n}\n"],"names":[],"mappings":"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"}