wolfree-dockerfile/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Placeholder.js

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 }
);
}
};
}