Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 1.31
  • master
  • 1.10.0
  • 1.30.1
  • 1.31.0
  • 1.8.0
  • 1.9.0
  • 3.100.0
  • 3.100.1
  • 3.100.10
  • 3.100.11
  • 3.100.12
  • 3.100.13
  • 3.100.14
  • 3.100.15
  • 3.100.16
  • 3.100.17
  • 3.100.18
  • 3.100.19
  • 3.100.2
  • 3.100.20
  • 3.100.3
  • 3.100.4
  • 3.100.5
  • 3.100.6
  • 3.100.7
  • 3.100.8
  • 3.100.9
  • 3.101.0
  • 3.101.1
  • 3.101.2
  • 3.101.3
  • 3.102.0
  • 3.102.1
  • 3.102.2
  • 3.102.3
  • 3.102.4
  • 3.102.5
  • 3.102.6
  • 3.103.0
  • 3.103.1
  • 3.104.0
  • 3.104.1
  • 3.105.0
  • 3.105.1
  • 3.105.2
  • 3.106.0
  • 3.106.1
  • 3.107.0
  • 3.108.0
  • 3.108.1
  • 3.108.2
  • 3.108.3
  • 3.108.4
  • 3.108.5
  • 3.109.0
  • 3.110.0
  • 3.110.1
  • 3.110.2
  • 3.110.3
  • 3.110.4
  • 3.111.0
  • 3.112.0
  • 3.112.1
  • 3.112.2
  • 3.112.3
  • 3.112.4
  • 3.113.0
  • 3.114.0
  • 3.114.1
  • 3.114.2
  • 3.114.3
  • 3.114.4
  • 3.114.5
  • 3.114.6
  • 3.114.7
  • 3.115.0
  • 3.115.1
  • 3.115.2
  • 3.115.3
  • 3.115.4
  • 3.116.0
  • 3.116.1
  • 3.117.0
  • 3.117.1
  • 3.117.2
  • 3.117.3
  • 3.118.0
  • 3.118.1
  • 3.119.0
  • 3.120.0
  • 3.121.0
  • 3.51.5
  • 3.52.0
  • 3.52.1
  • 3.53.0
  • 3.54.0
  • 3.55.0
  • 3.55.1
  • 3.55.2
  • 3.55.3
  • 3.55.4
102 results

Target

Select target project
  • oss/libraries/javascript/monster
1 result
Select Git revision
  • 1.31
  • master
  • 1.10.0
  • 1.30.1
  • 1.31.0
  • 1.8.0
  • 1.9.0
  • 3.100.0
  • 3.100.1
  • 3.100.10
  • 3.100.11
  • 3.100.12
  • 3.100.13
  • 3.100.14
  • 3.100.15
  • 3.100.16
  • 3.100.17
  • 3.100.18
  • 3.100.19
  • 3.100.2
  • 3.100.20
  • 3.100.3
  • 3.100.4
  • 3.100.5
  • 3.100.6
  • 3.100.7
  • 3.100.8
  • 3.100.9
  • 3.101.0
  • 3.101.1
  • 3.101.2
  • 3.101.3
  • 3.102.0
  • 3.102.1
  • 3.102.2
  • 3.102.3
  • 3.102.4
  • 3.102.5
  • 3.102.6
  • 3.103.0
  • 3.103.1
  • 3.104.0
  • 3.104.1
  • 3.105.0
  • 3.105.1
  • 3.105.2
  • 3.106.0
  • 3.106.1
  • 3.107.0
  • 3.108.0
  • 3.108.1
  • 3.108.2
  • 3.108.3
  • 3.108.4
  • 3.108.5
  • 3.109.0
  • 3.110.0
  • 3.110.1
  • 3.110.2
  • 3.110.3
  • 3.110.4
  • 3.111.0
  • 3.112.0
  • 3.112.1
  • 3.112.2
  • 3.112.3
  • 3.112.4
  • 3.113.0
  • 3.114.0
  • 3.114.1
  • 3.114.2
  • 3.114.3
  • 3.114.4
  • 3.114.5
  • 3.114.6
  • 3.114.7
  • 3.115.0
  • 3.115.1
  • 3.115.2
  • 3.115.3
  • 3.115.4
  • 3.116.0
  • 3.116.1
  • 3.117.0
  • 3.117.1
  • 3.117.2
  • 3.117.3
  • 3.118.0
  • 3.118.1
  • 3.119.0
  • 3.120.0
  • 3.121.0
  • 3.51.5
  • 3.52.0
  • 3.52.1
  • 3.53.0
  • 3.54.0
  • 3.55.0
  • 3.55.1
  • 3.55.2
  • 3.55.3
  • 3.55.4
102 results
Show changes
Showing
with 297 additions and 19 deletions
......@@ -26,7 +26,7 @@ import {
} from "./constants.mjs";
import {findDocumentTemplate, Template} from "./template.mjs";
import {Updater} from "./updater.mjs";
import {instanceSymbol} from '../constants.mjs';
export {CustomElement, initMethodSymbol, assembleMethodSymbol, attributeObserverSymbol, registerCustomElement, assignUpdaterToElement, getSlottedElements}
/**
......@@ -195,6 +195,16 @@ class CustomElement extends HTMLElement {
this[initMethodSymbol]();
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/dom/custom-element");
}
/**
* This method determines which attributes are to be monitored by `attributeChangedCallback()`.
*
......
......@@ -11,7 +11,7 @@ import {getGlobalObject} from "../types/global.mjs";
import {isArray} from "../types/is.mjs";
import {Stack} from "../types/stack.mjs";
import {validateInstance, validateString} from "../types/validate.mjs";
import {instanceSymbol} from '../constants.mjs';
export {FocusManager}
/**
......@@ -57,6 +57,16 @@ const stackSymbol = Symbol('stack');
this[stackSymbol] = new Stack();
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/dom/focusmanager");
}
/**
* @property {HTMLDocument} document the document object into which the node is to be appended
*/
......
......@@ -14,6 +14,7 @@ import {isString} from "../types/is.mjs";
import {Observer} from "../types/observer.mjs";
import {ProxyObserver} from "../types/proxyobserver.mjs";
import {ATTRIBUTE_CLASS, ATTRIBUTE_ID, ATTRIBUTE_TITLE} from "./constants.mjs";
import {instanceSymbol} from "../constants.mjs";
export {Resource, KEY_DOCUMENT, KEY_QUERY, referenceSymbol}
......@@ -191,6 +192,13 @@ class Resource extends BaseWithOptions {
throw new Error("this method must be implemented by derived classes");
}
/**
* @return {symbol}
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/dom/resource");
}
}
......
......@@ -18,7 +18,7 @@ import {
TAG_SCRIPT
} from "../constants.mjs";
import {KEY_DOCUMENT, KEY_QUERY, referenceSymbol, Resource} from "../resource.mjs";
import {instanceSymbol} from '../../constants.mjs';
export {Data}
/**
......@@ -70,6 +70,16 @@ class Data extends Resource {
return this;
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/dom/resource/data");
}
/**
* @return {string}
*/
......
......@@ -15,7 +15,7 @@ import {
TAG_LINK
} from "../constants.mjs";
import {KEY_DOCUMENT, referenceSymbol, Resource} from "../resource.mjs";
import {instanceSymbol} from '../../constants.mjs';
export {Link}
/**
......@@ -67,6 +67,16 @@ class Link extends Resource {
})
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/dom/resource/link");
}
/**
*
* @return {Monster.DOM.Resource.Link}
......
......@@ -7,7 +7,7 @@
import {extend} from "../../../data/extend.mjs";
import {Link} from "../link.mjs";
import {instanceSymbol} from '../../../constants.mjs';
export {Stylesheet}
/**
......@@ -31,5 +31,15 @@ class Stylesheet extends Link {
})
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/dom/resource/link/stylesheet")
}
}
......@@ -16,7 +16,7 @@ import {
TAG_SCRIPT
} from "../constants.mjs";
import {KEY_DOCUMENT, referenceSymbol, Resource} from "../resource.mjs";
import {instanceSymbol} from '../../constants.mjs';
export {Script}
/**
......@@ -53,6 +53,15 @@ class Script extends Resource {
})
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/dom/resource/script");
}
/**
*
* @return {Monster.DOM.Resource.Script}
......
......@@ -10,7 +10,7 @@ import {getGlobalFunction, getGlobalObject} from '../types/global.mjs';
import {validateInstance, validateString} from "../types/validate.mjs";
import {ATTRIBUTE_TEMPLATE_PREFIX} from "./constants.mjs";
import {getDocumentTheme} from "./theme.mjs";
import {instanceSymbol} from '../constants.mjs';
export {Template}
/**
......@@ -37,6 +37,16 @@ class Template extends Base {
this.template = template;
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/dom/resource/template");
}
/**
*
* @returns {HTMLTemplateElement}
......
......@@ -9,7 +9,7 @@ import {Base} from '../types/base.mjs';
import {getGlobalObject} from '../types/global.mjs';
import {validateString} from "../types/validate.mjs";
import {ATTRIBUTE_THEME_NAME, DEFAULT_THEME} from "./constants.mjs";
import {instanceSymbol} from '../constants.mjs';
export {Theme, getDocumentTheme}
/**
......@@ -35,6 +35,16 @@ class Theme extends Base {
this.name = name;
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/dom/theme");
}
/**
*
* @returns {string}
......
......@@ -5,11 +5,30 @@
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
*/
import {instanceSymbol} from "../constants.mjs";
export {Base}
/**
* This is the base class from which all monster classes are derived.
*
* This class has besides a `toString` which returns the json representation of the object
* also a functionality to check if an object is an instance of a class.
*
* Therefor the class has a static method ` [Symbol.hasInstance](that)` which returns true if the object
* is an instance of the class.
* F
* @see [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance](developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance)
*
* Derived classes should implement a static getter `instanceSymbol` which returns a unique symbol.
*
* ```javascript
* static get [instanceSymbol]() {
* return Symbol.for("@schukai/monster/types/base");
* }
* ```
*
* The class was formerly called Object.
*
* @license AGPLv3
......@@ -27,5 +46,86 @@ class Base extends Object {
return JSON.stringify(this);
};
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/base");
}
/**
* This method is called by the `instanceof` operator.
* @param that
* @returns {boolean}
* @since 2.1.0
*/
static [Symbol.hasInstance](that) {
if (that === undefined || that === null || (typeof that !== "object" && typeof that !== "function")) {
return false;
}
const thatClass = Object.getPrototypeOf(that)
if (thatClass === undefined || thatClass === null || (typeof thatClass !== "object" && typeof thatClass !== "function")) {
return false;
}
if (checkInstanceSymbol.apply(this, [thatClass]) === true) {
return true;
}
// this call the static method of the super class, if there is one
return super[Symbol.hasInstance](that);
}
}
/**
* this function checks if the class has a static getter `instanceSymbol` and if the value of this getter is equal to the
*
* @private
* @param obj
* @returns {boolean|any|boolean}
* @since 2.1.0
*/
function checkInstanceSymbol(obj) {
if (this.hasOwnProperty(instanceSymbol) === false) {
return false;
}
const proto = obj?.constructor;
if (proto === undefined || proto === null || (typeof proto !== "object" && typeof proto !== "function")) {
return false;
}
if (proto.hasOwnProperty(instanceSymbol) !== true) {
return checkInstanceSymbol.apply(this, [obj.__proto__]);
}
const symbol = proto[instanceSymbol];
if (symbol === undefined) {
if (obj.__proto__) {
return checkInstanceSymbol(obj.__proto__);
} else {
return false;
}
}
if (symbol === this[instanceSymbol]) {
return true;
}
return checkInstanceSymbol.apply(this, [obj.__proto__]);
}
......@@ -9,7 +9,7 @@ import {Base} from "./base.mjs";
import {isString} from "./is.mjs";
import {MediaType, parseMediaType} from "./mediatype.mjs";
import {validateBoolean, validateInstance, validateString} from "./validate.mjs";
import {instanceSymbol} from '../constants.mjs';
export {DataUrl, parseDataURL}
/**
......@@ -52,6 +52,16 @@ class DataUrl extends Base {
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/data-url");
}
get content() {
return this[internal].base64 ? atob(this[internal].content) : this[internal].content;
}
......
......@@ -8,7 +8,7 @@
import {Base} from "./base.mjs";
import {isString} from "./is.mjs";
import {validateArray, validateString} from "./validate.mjs";
import {instanceSymbol} from '../constants.mjs';
export {MediaType, parseMediaType}
/**
......@@ -57,6 +57,16 @@ class MediaType extends Base {
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/media-type");
}
/**
* @return {String}
*/
......
......@@ -9,7 +9,7 @@ import {Base} from './base.mjs';
import {isPrimitive} from "./is.mjs";
import {NodeList} from './nodelist.mjs';
import {validateInstance} from './validate.mjs';
import {instanceSymbol} from '../constants.mjs';
export {Node}
/**
......@@ -52,6 +52,16 @@ class Node extends Base {
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/node");
}
/**
* @property {*}
*/
......
......@@ -8,7 +8,7 @@
import {isArray, isInstance} from "./is.mjs";
import {Node} from "./node.mjs";
import {validateInstance} from "./validate.mjs";
import {instanceSymbol} from '../constants.mjs';
export {NodeList}
/**
......@@ -44,6 +44,16 @@ class NodeList extends Set {
}
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/node-list");
}
/**
*
* @param {Node} node
......
......@@ -9,7 +9,7 @@ import {Base} from './base.mjs';
import {isObject} from './is.mjs';
import {TokenList} from './tokenlist.mjs';
import {UniqueQueue} from './uniquequeue.mjs';
import {instanceSymbol} from '../constants.mjs';
export {Observer}
/**
......@@ -64,6 +64,16 @@ class Observer extends Base {
this.queue = new UniqueQueue();
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/observer");
}
/**
*
* @param {string} tag
......
......@@ -11,7 +11,7 @@ import {Observer} from "./observer.mjs";
import {ObserverList} from "./observerlist.mjs";
import {validateObject} from "./validate.mjs";
import {extend} from "../data/extend.mjs";
import {instanceSymbol} from '../constants.mjs';
export {ProxyObserver}
/**
......@@ -50,6 +50,16 @@ export {ProxyObserver}
this.observers = new ObserverList;
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/proxy-observer");
}
/**
* get the real object
*
......
......@@ -6,7 +6,7 @@
*/
import {Base} from './base.mjs';
import {instanceSymbol} from '../constants.mjs';
export {Queue}
/**
......@@ -29,6 +29,16 @@ class Queue extends Base {
this.data = [];
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/queue");
}
/**
* @return {boolean}
......
......@@ -6,7 +6,7 @@
*/
import {Base} from './base.mjs';
import {instanceSymbol} from '../constants.mjs';
export {Stack}
/**
......@@ -27,6 +27,15 @@ class Stack extends Base {
this.data = [];
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/stack");
}
/**
* @return {boolean}
......
......@@ -6,9 +6,11 @@
*/
import {Base} from './base.mjs';
import {instanceSymbol} from '../constants.mjs';
export {Version, getMonsterVersion}
/**
* The version object contains a semantic version number
*
......@@ -72,6 +74,16 @@ class Version extends Base {
}
/**
* This method is called by the `instanceof` operator.
* @returns {symbol}
* @since 2.1.0
*/
static get [instanceSymbol]() {
return Symbol.for("@schukai/monster/types/version");
}
/**
*
* @returns {string}
......@@ -137,7 +149,7 @@ function getMonsterVersion() {
}
/** don't touch, replaced by make with package.json version */
monsterVersion = new Version('2.0.15')
monsterVersion = new Version('2.0.16')
return monsterVersion;
......
{
"name": "monster",
"version": "2.0.15",
"version": "2.0.16",
"description": "monster",
"repository": {
"type": "git",
......