70 lines
1.7 KiB
JavaScript
70 lines
1.7 KiB
JavaScript
/**
|
|
* @license
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
* This file is part of Wolfree.
|
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
*/
|
|
|
|
// @ts-check
|
|
|
|
export default class Placeholder {
|
|
className = "wolfree-placeholder";
|
|
|
|
placeholderHTML = `
|
|
<div class="${this.className}">
|
|
<div>
|
|
<div>
|
|
<div><div></div></div>
|
|
<div><div></div></div>
|
|
<div><div></div></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`;
|
|
|
|
insert = ({
|
|
container = document.querySelector(
|
|
"html > body > #__next > div > main > main > div:nth-of-type(1)"
|
|
),
|
|
} = {}) => {
|
|
try {
|
|
return (
|
|
container instanceof HTMLDivElement
|
|
? container.insertAdjacentHTML("afterend", this.placeholderHTML)
|
|
: console.error({ container }),
|
|
{ container }
|
|
);
|
|
} catch (error) {
|
|
return (
|
|
console.error(
|
|
{ error },
|
|
"Fail to insert the skeleton placeholder components."
|
|
),
|
|
{ error }
|
|
);
|
|
}
|
|
};
|
|
|
|
remove = ({
|
|
allPlaceholders = document.querySelectorAll(
|
|
`html > body > #__next > div > main > main > div.${this.className}`
|
|
),
|
|
} = {}) => {
|
|
try {
|
|
return (
|
|
console.assert(allPlaceholders.length === 1),
|
|
allPlaceholders.forEach((placeholder) => placeholder.remove()),
|
|
{ allPlaceholders }
|
|
);
|
|
} catch (error) {
|
|
return (
|
|
console.error(
|
|
{ error },
|
|
"Fail to remove the skeleton placeholder components."
|
|
),
|
|
{ error }
|
|
);
|
|
}
|
|
};
|
|
}
|