UNPKG

@schukai/monster

Version:

Monster is a simple library for creating fast, robust and lightweight websites.

87 lines (78 loc) 2.24 kB
/** * Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved. * Node module: @schukai/monster * * This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3). * The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html * * For those who do not wish to adhere to the AGPLv3, a commercial license is available. * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms. * For more information about purchasing a commercial license, please contact schukai GmbH. * * SPDX-License-Identifier: AGPL-3.0 */ import { Base } from "../types/base.mjs"; import { getGlobalFunction } from "../types/global.mjs"; import { ProxyObserver } from "../types/proxyobserver.mjs"; import { validateInstance, validateString } from "../types/validate.mjs"; export { ATTRIBUTEPREFIX, Assembler }; /** * attribute prefix * * @type {string} */ const ATTRIBUTEPREFIX = "data-monster-"; /** * Assembler class * * @license AGPLv3 * @since 1.6.0 * @copyright schukai GmbH * @summary Allows you to build an html fragment */ class Assembler extends Base { /** * @param {DocumentFragment} fragment * @throws {TypeError} value is not an instance of * @throws {TypeError} value is not a function * @throws {Error} the function is not defined */ constructor(fragment) { super(); this.attributePrefix = ATTRIBUTEPREFIX; validateInstance(fragment, getGlobalFunction("DocumentFragment")); this.fragment = fragment; } /** * * @param {string} prefix * @return {Assembler} * @throws {TypeError} value is not a string */ setAttributePrefix(prefix) { validateString(prefix); this.attributePrefix = prefix; return this; } /** * * @return {string} */ getAttributePrefix() { return this.attributePrefix; } /** * * @param {ProxyObserver|undefined} data * @return {DocumentFragment} * @throws {TypeError} value is not an instance of */ createDocumentFragment(data) { if (data === undefined) { data = new ProxyObserver({}); } validateInstance(data, ProxyObserver); const fragment = this.fragment.cloneNode(true); return fragment; } }