|
|
@@ -50,25 +50,24 @@ let fontFaces;
|
|
|
if (window._singleFile_fontFaces) {
|
|
|
fontFaces = window._singleFile_fontFaces;
|
|
|
} else {
|
|
|
- fontFaces = window._singleFile_fontFaces = [];
|
|
|
+ fontFaces = window._singleFile_fontFaces = new Map();
|
|
|
}
|
|
|
|
|
|
if (document instanceof HTMLDocument) {
|
|
|
if (browser && browser.runtime && browser.runtime.getURL) {
|
|
|
addEventListener(NEW_FONT_FACE_EVENT, event => {
|
|
|
const detail = event.detail;
|
|
|
- if (!fontFaces.find(fontFace => JSON.stringify(fontFace) == JSON.stringify(detail))) {
|
|
|
- fontFaces.push(event.detail);
|
|
|
- }
|
|
|
+ const key = Object.assign({}, detail);
|
|
|
+ delete key.src;
|
|
|
+ fontFaces.set(JSON.stringify(key), detail);
|
|
|
});
|
|
|
addEventListener(DELETE_FONT_EVENT, event => {
|
|
|
const detail = event.detail;
|
|
|
- const indexFontFace = fontFaces.findIndex(fontFace => fontFace["family-name"] == detail["family-name"]);
|
|
|
- if (indexFontFace != -1) {
|
|
|
- fontFaces.splice(indexFontFace, 1);
|
|
|
- }
|
|
|
+ const key = Object.assign({}, detail);
|
|
|
+ delete key.src;
|
|
|
+ fontFaces.delete(JSON.stringify(key));
|
|
|
});
|
|
|
- addEventListener(CLEAR_FONTS_EVENT, () => fontFaces = []);
|
|
|
+ addEventListener(CLEAR_FONTS_EVENT, () => fontFaces = new Map());
|
|
|
let scriptElement = document.createElement("script");
|
|
|
scriptElement.src = "data:," + "(" + injectedScript.toString() + ")()";
|
|
|
(document.documentElement || document).appendChild(scriptElement);
|
|
|
@@ -91,7 +90,7 @@ export {
|
|
|
};
|
|
|
|
|
|
function getFontsData() {
|
|
|
- return fontFaces;
|
|
|
+ return Array.from(fontFaces.values());
|
|
|
}
|
|
|
|
|
|
function loadDeferredImagesStart(options) {
|