Something went wrong on our end
Select Git revision
-
Volker Schukai authoredVolker Schukai authored
customelement.mjs 25.44 KiB
/**
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
* Node module: @schukai/monster
* This file is licensed under the AGPLv3 License.
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
*/
import { internalSymbol } from "../constants.mjs";
import { extend } from "../data/extend.mjs";
import { Pathfinder } from "../data/pathfinder.mjs";
import { parseDataURL } from "../types/dataurl.mjs";
import { getGlobalObject } from "../types/global.mjs";
import { isArray, isFunction, isObject, isString } from "../types/is.mjs";
import { Observer } from "../types/observer.mjs";
import { ProxyObserver } from "../types/proxyobserver.mjs";
import { validateFunction, validateInstance, validateObject, validateString } from "../types/validate.mjs";
import { clone } from "../util/clone.mjs";
import { addAttributeToken, getLinkedObjects, hasObjectLink } from "./attributes.mjs";
import {
ATTRIBUTE_DISABLED,
ATTRIBUTE_ERRORMESSAGE,
ATTRIBUTE_OPTIONS,
ATTRIBUTE_OPTIONS_SELECTOR,
customElementUpdaterLinkSymbol,
} from "./constants.mjs";
import { findDocumentTemplate, Template } from "./template.mjs";
import { addObjectWithUpdaterToElement } from "./updater.mjs";
import { instanceSymbol } from "../constants.mjs";
export {
CustomElement,
initMethodSymbol,
assembleMethodSymbol,
attributeObserverSymbol,
registerCustomElement,
getSlottedElements,
};
/**
* @memberOf Monster.DOM
* @type {symbol}
*/
const initMethodSymbol = Symbol.for("@schukai/monster/dom/@@initMethodSymbol");
/**
* @memberOf Monster.DOM
* @type {symbol}
*/
const assembleMethodSymbol = Symbol.for("@schukai/monster/dom/@@assembleMethodSymbol");
/**
* this symbol holds the attribute observer callbacks. The key is the attribute name.
* @memberOf Monster.DOM
* @type {symbol}
*/
const attributeObserverSymbol = Symbol.for("@schukai/monster/dom/@@attributeObserver");
/**
* HTMLElement
* @external HTMLElement
* @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement
*
* @startuml customelement-sequencediagram.png
* skinparam monochrome true
* skinparam shadowing false
*
* autonumber
*
* Script -> DOM: element = document.createElement('my-element')