@ettrloz/object-to-dom 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/apply-style-object.ts
3
+ function applyStyleObject(element, style) {
4
+ const { style: declaration } = element;
5
+ if (typeof style === "string") {
6
+ declaration.cssText = style;
7
+ return element;
8
+ }
9
+ for (const [property, value] of Object.entries(style)) {
10
+ if (typeof value !== "string") continue;
11
+ declaration[property] = value;
12
+ }
13
+ return element;
14
+ }
15
+ //#endregion
16
+ exports.applyStyleObject = applyStyleObject;
17
+
18
+ //# sourceMappingURL=apply-style-object.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-style-object.cjs","names":[],"sources":["../../src/apply-style-object.ts"],"sourcesContent":["import type { StyleObject } from './types';\n\ntype MutableStyleDeclaration = CSSStyleDeclaration & Record<string, string | undefined>;\n\nexport function applyStyleObject<CurrentElement extends HTMLElement | SVGElement>(\n element: CurrentElement,\n style: StyleObject\n): CurrentElement {\n const { style: declaration } = element;\n\n if (typeof style === 'string') {\n declaration.cssText = style;\n return element;\n }\n\n for (const [property, value] of Object.entries(style)) {\n if (typeof value !== 'string') {\n continue;\n }\n\n (declaration as MutableStyleDeclaration)[property] = value;\n }\n\n return element;\n}\n"],"mappings":";;AAIA,SAAgB,iBACd,SACA,OACgB;CAChB,MAAM,EAAE,OAAO,gBAAgB;CAE/B,IAAI,OAAO,UAAU,UAAU;EAC7B,YAAY,UAAU;EACtB,OAAO;CACT;CAEA,KAAK,MAAM,CAAC,UAAU,UAAU,OAAO,QAAQ,KAAK,GAAG;EACrD,IAAI,OAAO,UAAU,UACnB;EAGF,YAAyC,YAAY;CACvD;CAEA,OAAO;AACT"}
@@ -1,6 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_apply_style_object = require("./apply-style-object.cjs");
2
3
  const require_utils = require("./utils.cjs");
3
4
  const require_object_to_dom = require("./object-to-dom.cjs");
5
+ exports.applyStyleObject = require_apply_style_object.applyStyleObject;
4
6
  exports.assertDOMObject = require_utils.assertDOMObject;
5
7
  exports.assertDOMObjectChildren = require_utils.assertDOMObjectChildren;
6
8
  exports.dom = require_object_to_dom.dom;
@@ -1,10 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_apply_style_object = require("./apply-style-object.cjs");
2
3
  const require_utils = require("./utils.cjs");
3
4
  //#region src/object-to-dom.ts
4
5
  const createOrReturn = (element) => typeof element === "string" ? document.createElement(element) : element;
5
6
  const getTagOrConstructorName = (element) => typeof element === "string" ? element : element.constructor.name;
6
7
  function createChildlessDOM(obj) {
7
- const { element: inputElement, class: className, attrs, events } = obj;
8
+ const { element: inputElement, class: className, attrs, style, events } = obj;
8
9
  const element = createOrReturn(inputElement);
9
10
  if (className) element.classList.add(className);
10
11
  if (attrs) for (const name in attrs) switch (typeof attrs[name]) {
@@ -14,6 +15,7 @@ function createChildlessDOM(obj) {
14
15
  break;
15
16
  case "boolean": if (attrs[name]) element.setAttribute(name, "");
16
17
  }
18
+ if (style) require_apply_style_object.applyStyleObject(element, style);
17
19
  if (events) for (const name in events) element.addEventListener(name, (event) => {
18
20
  events[name]?.call(element, event);
19
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"object-to-dom.cjs","names":["isDOMObject","isDOMInstance"],"sources":["../../src/object-to-dom.ts"],"sourcesContent":["import type { DOMChildren, DOMInstance, DOMObject } from './types';\nimport { assertDOMObject, isDOMInstance, isDOMObject } from './utils';\n\nconst createOrReturn = (element: DOMObject['element']) =>\n typeof element === 'string' ? document.createElement(element) : element;\n\nconst getTagOrConstructorName = (element: DOMObject['element']) =>\n typeof element === 'string' ? element : element.constructor.name;\n\nfunction createChildlessDOM(obj: DOMObject) {\n const { element: inputElement, class: className, attrs, events } = obj;\n const element = createOrReturn(inputElement);\n\n if (className) {\n element.classList.add(className);\n }\n\n if (attrs) {\n for (const name in attrs) {\n switch (typeof attrs[name]) {\n case 'string':\n case 'number':\n element.setAttribute(name, attrs[name].toString());\n\n break;\n case 'boolean':\n if (attrs[name]) {\n element.setAttribute(name, '');\n }\n }\n }\n }\n\n if (events) {\n for (const name in events) {\n element.addEventListener(name, event => {\n events[name as keyof typeof events]?.call(element, event as any);\n });\n }\n }\n\n return element;\n}\n\nexport function dom<const Input extends DOMObject[]>(...inputs: Input) {\n const elements: Element[] = [];\n const markers: Record<string, Element> = {};\n\n const visited = new WeakSet<DOMObject>();\n\n function visit(obj: DOMObject) {\n if (visited.has(obj)) {\n throw new Error(\n `Object of '${getTagOrConstructorName(obj.element)} has circular dependency.`\n );\n }\n\n assertDOMObject(obj);\n visited.add(obj);\n\n const element = createChildlessDOM(obj);\n\n if (obj.mark && !(obj.mark in markers)) {\n markers[obj.mark] = element;\n }\n\n if (Object.hasOwn(obj, 'children')) {\n (obj.children as DOMChildren[]).forEach(child => {\n switch (typeof child) {\n case 'string':\n case 'number':\n case 'boolean':\n element.appendChild(document.createTextNode(child.toString()));\n\n break;\n case 'object':\n if (child instanceof Element) {\n element.appendChild(child);\n } else if (isDOMObject(child)) {\n element.appendChild(visit(child));\n } else if (isDOMInstance(child)) {\n for (const instanceElement of child.elements) {\n element.appendChild(instanceElement);\n }\n }\n }\n });\n }\n\n visited.delete(obj);\n\n return element;\n }\n\n for (const input of inputs) {\n elements.push(visit(input));\n }\n\n return {\n elements,\n markers\n } as DOMInstance<Input>;\n}\n"],"mappings":";;;AAGA,MAAM,kBAAkB,YACtB,OAAO,YAAY,WAAW,SAAS,cAAc,OAAO,IAAI;AAElE,MAAM,2BAA2B,YAC/B,OAAO,YAAY,WAAW,UAAU,QAAQ,YAAY;AAE9D,SAAS,mBAAmB,KAAgB;CAC1C,MAAM,EAAE,SAAS,cAAc,OAAO,WAAW,OAAO,WAAW;CACnE,MAAM,UAAU,eAAe,YAAY;CAE3C,IAAI,WACF,QAAQ,UAAU,IAAI,SAAS;CAGjC,IAAI,OACF,KAAK,MAAM,QAAQ,OACjB,QAAQ,OAAO,MAAM,OAArB;EACE,KAAK;EACL,KAAK;GACH,QAAQ,aAAa,MAAM,MAAM,KAAK,CAAC,SAAS,CAAC;GAEjD;EACF,KAAK,WACH,IAAI,MAAM,OACR,QAAQ,aAAa,MAAM,EAAE;CAEnC;CAIJ,IAAI,QACF,KAAK,MAAM,QAAQ,QACjB,QAAQ,iBAAiB,OAAM,UAAS;EACtC,OAAO,KAA4B,EAAE,KAAK,SAAS,KAAY;CACjE,CAAC;CAIL,OAAO;AACT;AAEA,SAAgB,IAAqC,GAAG,QAAe;CACrE,MAAM,WAAsB,CAAC;CAC7B,MAAM,UAAmC,CAAC;CAE1C,MAAM,0BAAU,IAAI,QAAmB;CAEvC,SAAS,MAAM,KAAgB;EAC7B,IAAI,QAAQ,IAAI,GAAG,GACjB,MAAM,IAAI,MACR,cAAc,wBAAwB,IAAI,OAAO,EAAE,0BACrD;EAGF,cAAA,gBAAgB,GAAG;EACnB,QAAQ,IAAI,GAAG;EAEf,MAAM,UAAU,mBAAmB,GAAG;EAEtC,IAAI,IAAI,QAAQ,EAAE,IAAI,QAAQ,UAC5B,QAAQ,IAAI,QAAQ;EAGtB,IAAI,OAAO,OAAO,KAAK,UAAU,GAC/B,IAAK,SAA2B,SAAQ,UAAS;GAC/C,QAAQ,OAAO,OAAf;IACE,KAAK;IACL,KAAK;IACL,KAAK;KACH,QAAQ,YAAY,SAAS,eAAe,MAAM,SAAS,CAAC,CAAC;KAE7D;IACF,KAAK,UACH,IAAI,iBAAiB,SACnB,QAAQ,YAAY,KAAK;SACpB,IAAIA,cAAAA,YAAY,KAAK,GAC1B,QAAQ,YAAY,MAAM,KAAK,CAAC;SAC3B,IAAIC,cAAAA,cAAc,KAAK,GAC5B,KAAK,MAAM,mBAAmB,MAAM,UAClC,QAAQ,YAAY,eAAe;GAG3C;EACF,CAAC;EAGH,QAAQ,OAAO,GAAG;EAElB,OAAO;CACT;CAEA,KAAK,MAAM,SAAS,QAClB,SAAS,KAAK,MAAM,KAAK,CAAC;CAG5B,OAAO;EACL;EACA;CACF;AACF"}
1
+ {"version":3,"file":"object-to-dom.cjs","names":["isDOMObject","isDOMInstance"],"sources":["../../src/object-to-dom.ts"],"sourcesContent":["import { applyStyleObject } from './apply-style-object';\nimport type { DOMChildren, DOMInstance, DOMObject } from './types';\nimport { assertDOMObject, isDOMInstance, isDOMObject } from './utils';\n\nconst createOrReturn = (element: DOMObject['element']) =>\n typeof element === 'string' ? document.createElement(element) : element;\n\nconst getTagOrConstructorName = (element: DOMObject['element']) =>\n typeof element === 'string' ? element : element.constructor.name;\n\nfunction createChildlessDOM(obj: DOMObject) {\n const { element: inputElement, class: className, attrs, style, events } = obj;\n const element = createOrReturn(inputElement);\n\n if (className) {\n element.classList.add(className);\n }\n\n if (attrs) {\n for (const name in attrs) {\n switch (typeof attrs[name]) {\n case 'string':\n case 'number':\n element.setAttribute(name, attrs[name].toString());\n\n break;\n case 'boolean':\n if (attrs[name]) {\n element.setAttribute(name, '');\n }\n }\n }\n }\n\n if (style) {\n applyStyleObject(element as HTMLElement, style);\n }\n\n if (events) {\n for (const name in events) {\n element.addEventListener(name, event => {\n events[name as keyof typeof events]?.call(element, event as any);\n });\n }\n }\n\n return element;\n}\n\nexport function dom<const Input extends DOMObject[]>(...inputs: Input) {\n const elements: Element[] = [];\n const markers: Record<string, Element> = {};\n\n const visited = new WeakSet<DOMObject>();\n\n function visit(obj: DOMObject) {\n if (visited.has(obj)) {\n throw new Error(\n `Object of '${getTagOrConstructorName(obj.element)} has circular dependency.`\n );\n }\n\n assertDOMObject(obj);\n visited.add(obj);\n\n const element = createChildlessDOM(obj);\n\n if (obj.mark && !(obj.mark in markers)) {\n markers[obj.mark] = element;\n }\n\n if (Object.hasOwn(obj, 'children')) {\n (obj.children as DOMChildren[]).forEach(child => {\n switch (typeof child) {\n case 'string':\n case 'number':\n case 'boolean':\n element.appendChild(document.createTextNode(child.toString()));\n\n break;\n case 'object':\n if (child instanceof Element) {\n element.appendChild(child);\n } else if (isDOMObject(child)) {\n element.appendChild(visit(child));\n } else if (isDOMInstance(child)) {\n for (const instanceElement of child.elements) {\n element.appendChild(instanceElement);\n }\n }\n }\n });\n }\n\n visited.delete(obj);\n\n return element;\n }\n\n for (const input of inputs) {\n elements.push(visit(input));\n }\n\n return {\n elements,\n markers\n } as DOMInstance<Input>;\n}\n"],"mappings":";;;;AAIA,MAAM,kBAAkB,YACtB,OAAO,YAAY,WAAW,SAAS,cAAc,OAAO,IAAI;AAElE,MAAM,2BAA2B,YAC/B,OAAO,YAAY,WAAW,UAAU,QAAQ,YAAY;AAE9D,SAAS,mBAAmB,KAAgB;CAC1C,MAAM,EAAE,SAAS,cAAc,OAAO,WAAW,OAAO,OAAO,WAAW;CAC1E,MAAM,UAAU,eAAe,YAAY;CAE3C,IAAI,WACF,QAAQ,UAAU,IAAI,SAAS;CAGjC,IAAI,OACF,KAAK,MAAM,QAAQ,OACjB,QAAQ,OAAO,MAAM,OAArB;EACE,KAAK;EACL,KAAK;GACH,QAAQ,aAAa,MAAM,MAAM,KAAK,CAAC,SAAS,CAAC;GAEjD;EACF,KAAK,WACH,IAAI,MAAM,OACR,QAAQ,aAAa,MAAM,EAAE;CAEnC;CAIJ,IAAI,OACF,2BAAA,iBAAiB,SAAwB,KAAK;CAGhD,IAAI,QACF,KAAK,MAAM,QAAQ,QACjB,QAAQ,iBAAiB,OAAM,UAAS;EACtC,OAAO,KAA4B,EAAE,KAAK,SAAS,KAAY;CACjE,CAAC;CAIL,OAAO;AACT;AAEA,SAAgB,IAAqC,GAAG,QAAe;CACrE,MAAM,WAAsB,CAAC;CAC7B,MAAM,UAAmC,CAAC;CAE1C,MAAM,0BAAU,IAAI,QAAmB;CAEvC,SAAS,MAAM,KAAgB;EAC7B,IAAI,QAAQ,IAAI,GAAG,GACjB,MAAM,IAAI,MACR,cAAc,wBAAwB,IAAI,OAAO,EAAE,0BACrD;EAGF,cAAA,gBAAgB,GAAG;EACnB,QAAQ,IAAI,GAAG;EAEf,MAAM,UAAU,mBAAmB,GAAG;EAEtC,IAAI,IAAI,QAAQ,EAAE,IAAI,QAAQ,UAC5B,QAAQ,IAAI,QAAQ;EAGtB,IAAI,OAAO,OAAO,KAAK,UAAU,GAC/B,IAAK,SAA2B,SAAQ,UAAS;GAC/C,QAAQ,OAAO,OAAf;IACE,KAAK;IACL,KAAK;IACL,KAAK;KACH,QAAQ,YAAY,SAAS,eAAe,MAAM,SAAS,CAAC,CAAC;KAE7D;IACF,KAAK,UACH,IAAI,iBAAiB,SACnB,QAAQ,YAAY,KAAK;SACpB,IAAIA,cAAAA,YAAY,KAAK,GAC1B,QAAQ,YAAY,MAAM,KAAK,CAAC;SAC3B,IAAIC,cAAAA,cAAc,KAAK,GAC5B,KAAK,MAAM,mBAAmB,MAAM,UAClC,QAAQ,YAAY,eAAe;GAG3C;EACF,CAAC;EAGH,QAAQ,OAAO,GAAG;EAElB,OAAO;CACT;CAEA,KAAK,MAAM,SAAS,QAClB,SAAS,KAAK,MAAM,KAAK,CAAC;CAG5B,OAAO;EACL;EACA;CACF;AACF"}
@@ -7,7 +7,7 @@ function isDOMInstance(value) {
7
7
  function isDOMObject(value) {
8
8
  if (!isPlainObject(value)) return false;
9
9
  const keys = Object.keys(value);
10
- return keys.length > 0 && keys.every((key) => /^(element|mark|class|attrs|events|children)$/.test(key));
10
+ return keys.length > 0 && keys.every((key) => /^(element|mark|class|attrs|style|events|children)$/.test(key));
11
11
  }
12
12
  function isDOMChildren(value) {
13
13
  switch (typeof value) {
@@ -29,6 +29,7 @@ function assertDOMObject(obj) {
29
29
  if (Object.hasOwn(obj, "class") && typeof obj["class"] !== "string") throw new Error(`Property 'class' expected to be a typeof string, but got ${typeof obj["class"]}.`);
30
30
  if (Object.hasOwn(obj, "attrs") && !isPlainObject(obj["attrs"])) throw new Error(`Property 'attrs' expected to be a plain object, but got ${typeof obj["attrs"]}.`);
31
31
  if (Object.hasOwn(obj, "events") && !isPlainObject(obj["events"])) throw new Error(`Property 'events' expected to be a plain object, but got ${typeof obj["events"]}.`);
32
+ if (Object.hasOwn(obj, "style") && typeof obj["style"] !== "string" && !isPlainObject(obj["style"])) throw new Error(`Property 'style' expected to be a string or a plain object, but got ${typeof obj["style"]}.`);
32
33
  if (Object.hasOwn(obj, "children")) {
33
34
  if (!Array.isArray(obj["children"])) throw new Error(`Property 'children' expected to be a array of DOM children, but got ${typeof obj["children"]}.`);
34
35
  assertDOMObjectChildren(obj["children"], obj.element);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","names":[],"sources":["../../src/utils.ts"],"sourcesContent":["import type { DOMChildren, DOMInstance, DOMObject } from './types';\n\nconst isPlainObject = (value: unknown): value is Record<PropertyKey, unknown> =>\n Object.prototype.toString.call(value) === '[object Object]';\n\nexport function isDOMInstance(value: unknown): value is DOMInstance<[]> {\n return isPlainObject(value) && ['elements', 'markers'].every(prop => Object.hasOwn(value, prop));\n}\n\nexport function isDOMObject(value: unknown): value is DOMObject {\n if (!isPlainObject(value)) {\n return false;\n }\n\n const keys = Object.keys(value);\n\n return (\n keys.length > 0 && keys.every(key => /^(element|mark|class|attrs|events|children)$/.test(key))\n );\n}\n\nexport function isDOMChildren(value: unknown): value is DOMChildren {\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean':\n return true;\n case 'object':\n if (value instanceof Element || isDOMInstance(value) || isDOMObject(value)) {\n return true;\n }\n }\n\n return false;\n}\n\n/** @internal */\nexport function assertDOMObject(obj: DOMObject) {\n if (!isDOMObject(obj)) {\n throw new Error('Object is not a valid DOM object.');\n }\n\n if (!Object.hasOwn(obj, 'element')) {\n throw new Error(\n \"Missing property 'element', expected HTML or SVG tag name or instanceof Element.\"\n );\n }\n\n if (Object.hasOwn(obj, 'mark')) {\n if (typeof obj['mark'] !== 'string') {\n throw new Error(\n `Property 'mark' expected to be a typeof string, but got ${typeof obj['mark']}.`\n );\n } else if (obj['mark'].length <= 0) {\n throw new Error(\"Property 'mark' must be non-empty string.\");\n }\n }\n\n if (Object.hasOwn(obj, 'class') && typeof obj['class'] !== 'string') {\n throw new Error(\n `Property 'class' expected to be a typeof string, but got ${typeof obj['class']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'attrs') && !isPlainObject(obj['attrs'])) {\n throw new Error(\n `Property 'attrs' expected to be a plain object, but got ${typeof obj['attrs']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'events') && !isPlainObject(obj['events'])) {\n throw new Error(\n `Property 'events' expected to be a plain object, but got ${typeof obj['events']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'children')) {\n if (!Array.isArray(obj['children'])) {\n throw new Error(\n `Property 'children' expected to be a array of DOM children, but got ${typeof obj['children']}.`\n );\n }\n\n assertDOMObjectChildren(obj['children'], obj.element);\n }\n}\n\n/** @internal */\nexport function assertDOMObjectChildren(\n children: DOMChildren[],\n parentElement: DOMObject['element']\n) {\n children.forEach((child, index) => {\n if (!isDOMChildren(child)) {\n if (typeof parentElement === 'string') {\n throw new Error(\n `Tag '${parentElement}' has invalid children at index ${index}, expected to be a string, number, boolean, DOM Object, DOM Instance, or instance of Element.`\n );\n } else {\n throw new Error(\n `Element tag name '${parentElement.tagName}' has invalid children at index ${index}, expected to be a string, number, boolean, DOM Object, DOM Instance, or instance of Element.`\n );\n }\n }\n });\n}\n"],"mappings":";;AAEA,MAAM,iBAAiB,UACrB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAE5C,SAAgB,cAAc,OAA0C;CACtE,OAAO,cAAc,KAAK,KAAK,CAAC,YAAY,SAAS,CAAC,CAAC,OAAM,SAAQ,OAAO,OAAO,OAAO,IAAI,CAAC;AACjG;AAEA,SAAgB,YAAY,OAAoC;CAC9D,IAAI,CAAC,cAAc,KAAK,GACtB,OAAO;CAGT,MAAM,OAAO,OAAO,KAAK,KAAK;CAE9B,OACE,KAAK,SAAS,KAAK,KAAK,OAAM,QAAO,+CAA+C,KAAK,GAAG,CAAC;AAEjG;AAEA,SAAgB,cAAc,OAAsC;CAClE,QAAQ,OAAO,OAAf;EACE,KAAK;EACL,KAAK;EACL,KAAK,WACH,OAAO;EACT,KAAK,UACH,IAAI,iBAAiB,WAAW,cAAc,KAAK,KAAK,YAAY,KAAK,GACvE,OAAO;CAEb;CAEA,OAAO;AACT;;AAGA,SAAgB,gBAAgB,KAAgB;CAC9C,IAAI,CAAC,YAAY,GAAG,GAClB,MAAM,IAAI,MAAM,mCAAmC;CAGrD,IAAI,CAAC,OAAO,OAAO,KAAK,SAAS,GAC/B,MAAM,IAAI,MACR,kFACF;CAGF,IAAI,OAAO,OAAO,KAAK,MAAM,GAAG;EAC9B,IAAI,OAAO,IAAI,YAAY,UACzB,MAAM,IAAI,MACR,2DAA2D,OAAO,IAAI,QAAQ,EAChF;OACK,IAAI,IAAI,OAAO,CAAC,UAAU,GAC/B,MAAM,IAAI,MAAM,2CAA2C;CAE/D;CAEA,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,OAAO,IAAI,aAAa,UACzD,MAAM,IAAI,MACR,4DAA4D,OAAO,IAAI,SAAS,EAClF;CAGF,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,CAAC,cAAc,IAAI,QAAQ,GAC5D,MAAM,IAAI,MACR,2DAA2D,OAAO,IAAI,SAAS,EACjF;CAGF,IAAI,OAAO,OAAO,KAAK,QAAQ,KAAK,CAAC,cAAc,IAAI,SAAS,GAC9D,MAAM,IAAI,MACR,4DAA4D,OAAO,IAAI,UAAU,EACnF;CAGF,IAAI,OAAO,OAAO,KAAK,UAAU,GAAG;EAClC,IAAI,CAAC,MAAM,QAAQ,IAAI,WAAW,GAChC,MAAM,IAAI,MACR,uEAAuE,OAAO,IAAI,YAAY,EAChG;EAGF,wBAAwB,IAAI,aAAa,IAAI,OAAO;CACtD;AACF;;AAGA,SAAgB,wBACd,UACA,eACA;CACA,SAAS,SAAS,OAAO,UAAU;EACjC,IAAI,CAAC,cAAc,KAAK,GAAG;GACzB,IAAI,OAAO,kBAAkB,UAC3B,MAAM,IAAI,MACR,QAAQ,cAAc,kCAAkC,MAAM,8FAChE;QAEA,MAAM,IAAI,MACR,qBAAqB,cAAc,QAAQ,kCAAkC,MAAM,8FACrF;EAEJ;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"utils.cjs","names":[],"sources":["../../src/utils.ts"],"sourcesContent":["import type { DOMChildren, DOMInstance, DOMObject } from './types';\n\nconst isPlainObject = (value: unknown): value is Record<PropertyKey, unknown> =>\n Object.prototype.toString.call(value) === '[object Object]';\n\nexport function isDOMInstance(value: unknown): value is DOMInstance<[]> {\n return isPlainObject(value) && ['elements', 'markers'].every(prop => Object.hasOwn(value, prop));\n}\n\nexport function isDOMObject(value: unknown): value is DOMObject {\n if (!isPlainObject(value)) {\n return false;\n }\n\n const keys = Object.keys(value);\n\n return (\n keys.length > 0 &&\n keys.every(key => /^(element|mark|class|attrs|style|events|children)$/.test(key))\n );\n}\n\nexport function isDOMChildren(value: unknown): value is DOMChildren {\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean':\n return true;\n case 'object':\n if (value instanceof Element || isDOMInstance(value) || isDOMObject(value)) {\n return true;\n }\n }\n\n return false;\n}\n\n/** @internal */\nexport function assertDOMObject(obj: DOMObject) {\n if (!isDOMObject(obj)) {\n throw new Error('Object is not a valid DOM object.');\n }\n\n if (!Object.hasOwn(obj, 'element')) {\n throw new Error(\n \"Missing property 'element', expected HTML or SVG tag name or instanceof Element.\"\n );\n }\n\n if (Object.hasOwn(obj, 'mark')) {\n if (typeof obj['mark'] !== 'string') {\n throw new Error(\n `Property 'mark' expected to be a typeof string, but got ${typeof obj['mark']}.`\n );\n } else if (obj['mark'].length <= 0) {\n throw new Error(\"Property 'mark' must be non-empty string.\");\n }\n }\n\n if (Object.hasOwn(obj, 'class') && typeof obj['class'] !== 'string') {\n throw new Error(\n `Property 'class' expected to be a typeof string, but got ${typeof obj['class']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'attrs') && !isPlainObject(obj['attrs'])) {\n throw new Error(\n `Property 'attrs' expected to be a plain object, but got ${typeof obj['attrs']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'events') && !isPlainObject(obj['events'])) {\n throw new Error(\n `Property 'events' expected to be a plain object, but got ${typeof obj['events']}.`\n );\n }\n\n if (\n Object.hasOwn(obj, 'style') &&\n typeof obj['style'] !== 'string' &&\n !isPlainObject(obj['style'])\n ) {\n throw new Error(\n `Property 'style' expected to be a string or a plain object, but got ${typeof obj['style']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'children')) {\n if (!Array.isArray(obj['children'])) {\n throw new Error(\n `Property 'children' expected to be a array of DOM children, but got ${typeof obj['children']}.`\n );\n }\n\n assertDOMObjectChildren(obj['children'], obj.element);\n }\n}\n\n/** @internal */\nexport function assertDOMObjectChildren(\n children: DOMChildren[],\n parentElement: DOMObject['element']\n) {\n children.forEach((child, index) => {\n if (!isDOMChildren(child)) {\n if (typeof parentElement === 'string') {\n throw new Error(\n `Tag '${parentElement}' has invalid children at index ${index}, expected to be a string, number, boolean, DOM Object, DOM Instance, or instance of Element.`\n );\n } else {\n throw new Error(\n `Element tag name '${parentElement.tagName}' has invalid children at index ${index}, expected to be a string, number, boolean, DOM Object, DOM Instance, or instance of Element.`\n );\n }\n }\n });\n}\n"],"mappings":";;AAEA,MAAM,iBAAiB,UACrB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAE5C,SAAgB,cAAc,OAA0C;CACtE,OAAO,cAAc,KAAK,KAAK,CAAC,YAAY,SAAS,CAAC,CAAC,OAAM,SAAQ,OAAO,OAAO,OAAO,IAAI,CAAC;AACjG;AAEA,SAAgB,YAAY,OAAoC;CAC9D,IAAI,CAAC,cAAc,KAAK,GACtB,OAAO;CAGT,MAAM,OAAO,OAAO,KAAK,KAAK;CAE9B,OACE,KAAK,SAAS,KACd,KAAK,OAAM,QAAO,qDAAqD,KAAK,GAAG,CAAC;AAEpF;AAEA,SAAgB,cAAc,OAAsC;CAClE,QAAQ,OAAO,OAAf;EACE,KAAK;EACL,KAAK;EACL,KAAK,WACH,OAAO;EACT,KAAK,UACH,IAAI,iBAAiB,WAAW,cAAc,KAAK,KAAK,YAAY,KAAK,GACvE,OAAO;CAEb;CAEA,OAAO;AACT;;AAGA,SAAgB,gBAAgB,KAAgB;CAC9C,IAAI,CAAC,YAAY,GAAG,GAClB,MAAM,IAAI,MAAM,mCAAmC;CAGrD,IAAI,CAAC,OAAO,OAAO,KAAK,SAAS,GAC/B,MAAM,IAAI,MACR,kFACF;CAGF,IAAI,OAAO,OAAO,KAAK,MAAM,GAAG;EAC9B,IAAI,OAAO,IAAI,YAAY,UACzB,MAAM,IAAI,MACR,2DAA2D,OAAO,IAAI,QAAQ,EAChF;OACK,IAAI,IAAI,OAAO,CAAC,UAAU,GAC/B,MAAM,IAAI,MAAM,2CAA2C;CAE/D;CAEA,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,OAAO,IAAI,aAAa,UACzD,MAAM,IAAI,MACR,4DAA4D,OAAO,IAAI,SAAS,EAClF;CAGF,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,CAAC,cAAc,IAAI,QAAQ,GAC5D,MAAM,IAAI,MACR,2DAA2D,OAAO,IAAI,SAAS,EACjF;CAGF,IAAI,OAAO,OAAO,KAAK,QAAQ,KAAK,CAAC,cAAc,IAAI,SAAS,GAC9D,MAAM,IAAI,MACR,4DAA4D,OAAO,IAAI,UAAU,EACnF;CAGF,IACE,OAAO,OAAO,KAAK,OAAO,KAC1B,OAAO,IAAI,aAAa,YACxB,CAAC,cAAc,IAAI,QAAQ,GAE3B,MAAM,IAAI,MACR,uEAAuE,OAAO,IAAI,SAAS,EAC7F;CAGF,IAAI,OAAO,OAAO,KAAK,UAAU,GAAG;EAClC,IAAI,CAAC,MAAM,QAAQ,IAAI,WAAW,GAChC,MAAM,IAAI,MACR,uEAAuE,OAAO,IAAI,YAAY,EAChG;EAGF,wBAAwB,IAAI,aAAa,IAAI,OAAO;CACtD;AACF;;AAGA,SAAgB,wBACd,UACA,eACA;CACA,SAAS,SAAS,OAAO,UAAU;EACjC,IAAI,CAAC,cAAc,KAAK,GAAG;GACzB,IAAI,OAAO,kBAAkB,UAC3B,MAAM,IAAI,MACR,QAAQ,cAAc,kCAAkC,MAAM,8FAChE;QAEA,MAAM,IAAI,MACR,qBAAqB,cAAc,QAAQ,kCAAkC,MAAM,8FACrF;EAEJ;CACF,CAAC;AACH"}
@@ -0,0 +1,17 @@
1
+ //#region src/apply-style-object.ts
2
+ function applyStyleObject(element, style) {
3
+ const { style: declaration } = element;
4
+ if (typeof style === "string") {
5
+ declaration.cssText = style;
6
+ return element;
7
+ }
8
+ for (const [property, value] of Object.entries(style)) {
9
+ if (typeof value !== "string") continue;
10
+ declaration[property] = value;
11
+ }
12
+ return element;
13
+ }
14
+ //#endregion
15
+ export { applyStyleObject };
16
+
17
+ //# sourceMappingURL=apply-style-object.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-style-object.mjs","names":[],"sources":["../../src/apply-style-object.ts"],"sourcesContent":["import type { StyleObject } from './types';\n\ntype MutableStyleDeclaration = CSSStyleDeclaration & Record<string, string | undefined>;\n\nexport function applyStyleObject<CurrentElement extends HTMLElement | SVGElement>(\n element: CurrentElement,\n style: StyleObject\n): CurrentElement {\n const { style: declaration } = element;\n\n if (typeof style === 'string') {\n declaration.cssText = style;\n return element;\n }\n\n for (const [property, value] of Object.entries(style)) {\n if (typeof value !== 'string') {\n continue;\n }\n\n (declaration as MutableStyleDeclaration)[property] = value;\n }\n\n return element;\n}\n"],"mappings":";AAIA,SAAgB,iBACd,SACA,OACgB;CAChB,MAAM,EAAE,OAAO,gBAAgB;CAE/B,IAAI,OAAO,UAAU,UAAU;EAC7B,YAAY,UAAU;EACtB,OAAO;CACT;CAEA,KAAK,MAAM,CAAC,UAAU,UAAU,OAAO,QAAQ,KAAK,GAAG;EACrD,IAAI,OAAO,UAAU,UACnB;EAGF,YAAyC,YAAY;CACvD;CAEA,OAAO;AACT"}
@@ -1,3 +1,4 @@
1
+ import { applyStyleObject } from "./apply-style-object.mjs";
1
2
  import { assertDOMObject, assertDOMObjectChildren, isDOMChildren, isDOMInstance, isDOMObject } from "./utils.mjs";
2
3
  import { dom } from "./object-to-dom.mjs";
3
- export { assertDOMObject, assertDOMObjectChildren, dom, isDOMChildren, isDOMInstance, isDOMObject };
4
+ export { applyStyleObject, assertDOMObject, assertDOMObjectChildren, dom, isDOMChildren, isDOMInstance, isDOMObject };
@@ -1,9 +1,10 @@
1
+ import { applyStyleObject } from "./apply-style-object.mjs";
1
2
  import { assertDOMObject, isDOMInstance, isDOMObject } from "./utils.mjs";
2
3
  //#region src/object-to-dom.ts
3
4
  const createOrReturn = (element) => typeof element === "string" ? document.createElement(element) : element;
4
5
  const getTagOrConstructorName = (element) => typeof element === "string" ? element : element.constructor.name;
5
6
  function createChildlessDOM(obj) {
6
- const { element: inputElement, class: className, attrs, events } = obj;
7
+ const { element: inputElement, class: className, attrs, style, events } = obj;
7
8
  const element = createOrReturn(inputElement);
8
9
  if (className) element.classList.add(className);
9
10
  if (attrs) for (const name in attrs) switch (typeof attrs[name]) {
@@ -13,6 +14,7 @@ function createChildlessDOM(obj) {
13
14
  break;
14
15
  case "boolean": if (attrs[name]) element.setAttribute(name, "");
15
16
  }
17
+ if (style) applyStyleObject(element, style);
16
18
  if (events) for (const name in events) element.addEventListener(name, (event) => {
17
19
  events[name]?.call(element, event);
18
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"object-to-dom.mjs","names":[],"sources":["../../src/object-to-dom.ts"],"sourcesContent":["import type { DOMChildren, DOMInstance, DOMObject } from './types';\nimport { assertDOMObject, isDOMInstance, isDOMObject } from './utils';\n\nconst createOrReturn = (element: DOMObject['element']) =>\n typeof element === 'string' ? document.createElement(element) : element;\n\nconst getTagOrConstructorName = (element: DOMObject['element']) =>\n typeof element === 'string' ? element : element.constructor.name;\n\nfunction createChildlessDOM(obj: DOMObject) {\n const { element: inputElement, class: className, attrs, events } = obj;\n const element = createOrReturn(inputElement);\n\n if (className) {\n element.classList.add(className);\n }\n\n if (attrs) {\n for (const name in attrs) {\n switch (typeof attrs[name]) {\n case 'string':\n case 'number':\n element.setAttribute(name, attrs[name].toString());\n\n break;\n case 'boolean':\n if (attrs[name]) {\n element.setAttribute(name, '');\n }\n }\n }\n }\n\n if (events) {\n for (const name in events) {\n element.addEventListener(name, event => {\n events[name as keyof typeof events]?.call(element, event as any);\n });\n }\n }\n\n return element;\n}\n\nexport function dom<const Input extends DOMObject[]>(...inputs: Input) {\n const elements: Element[] = [];\n const markers: Record<string, Element> = {};\n\n const visited = new WeakSet<DOMObject>();\n\n function visit(obj: DOMObject) {\n if (visited.has(obj)) {\n throw new Error(\n `Object of '${getTagOrConstructorName(obj.element)} has circular dependency.`\n );\n }\n\n assertDOMObject(obj);\n visited.add(obj);\n\n const element = createChildlessDOM(obj);\n\n if (obj.mark && !(obj.mark in markers)) {\n markers[obj.mark] = element;\n }\n\n if (Object.hasOwn(obj, 'children')) {\n (obj.children as DOMChildren[]).forEach(child => {\n switch (typeof child) {\n case 'string':\n case 'number':\n case 'boolean':\n element.appendChild(document.createTextNode(child.toString()));\n\n break;\n case 'object':\n if (child instanceof Element) {\n element.appendChild(child);\n } else if (isDOMObject(child)) {\n element.appendChild(visit(child));\n } else if (isDOMInstance(child)) {\n for (const instanceElement of child.elements) {\n element.appendChild(instanceElement);\n }\n }\n }\n });\n }\n\n visited.delete(obj);\n\n return element;\n }\n\n for (const input of inputs) {\n elements.push(visit(input));\n }\n\n return {\n elements,\n markers\n } as DOMInstance<Input>;\n}\n"],"mappings":";;AAGA,MAAM,kBAAkB,YACtB,OAAO,YAAY,WAAW,SAAS,cAAc,OAAO,IAAI;AAElE,MAAM,2BAA2B,YAC/B,OAAO,YAAY,WAAW,UAAU,QAAQ,YAAY;AAE9D,SAAS,mBAAmB,KAAgB;CAC1C,MAAM,EAAE,SAAS,cAAc,OAAO,WAAW,OAAO,WAAW;CACnE,MAAM,UAAU,eAAe,YAAY;CAE3C,IAAI,WACF,QAAQ,UAAU,IAAI,SAAS;CAGjC,IAAI,OACF,KAAK,MAAM,QAAQ,OACjB,QAAQ,OAAO,MAAM,OAArB;EACE,KAAK;EACL,KAAK;GACH,QAAQ,aAAa,MAAM,MAAM,KAAK,CAAC,SAAS,CAAC;GAEjD;EACF,KAAK,WACH,IAAI,MAAM,OACR,QAAQ,aAAa,MAAM,EAAE;CAEnC;CAIJ,IAAI,QACF,KAAK,MAAM,QAAQ,QACjB,QAAQ,iBAAiB,OAAM,UAAS;EACtC,OAAO,KAA4B,EAAE,KAAK,SAAS,KAAY;CACjE,CAAC;CAIL,OAAO;AACT;AAEA,SAAgB,IAAqC,GAAG,QAAe;CACrE,MAAM,WAAsB,CAAC;CAC7B,MAAM,UAAmC,CAAC;CAE1C,MAAM,0BAAU,IAAI,QAAmB;CAEvC,SAAS,MAAM,KAAgB;EAC7B,IAAI,QAAQ,IAAI,GAAG,GACjB,MAAM,IAAI,MACR,cAAc,wBAAwB,IAAI,OAAO,EAAE,0BACrD;EAGF,gBAAgB,GAAG;EACnB,QAAQ,IAAI,GAAG;EAEf,MAAM,UAAU,mBAAmB,GAAG;EAEtC,IAAI,IAAI,QAAQ,EAAE,IAAI,QAAQ,UAC5B,QAAQ,IAAI,QAAQ;EAGtB,IAAI,OAAO,OAAO,KAAK,UAAU,GAC/B,IAAK,SAA2B,SAAQ,UAAS;GAC/C,QAAQ,OAAO,OAAf;IACE,KAAK;IACL,KAAK;IACL,KAAK;KACH,QAAQ,YAAY,SAAS,eAAe,MAAM,SAAS,CAAC,CAAC;KAE7D;IACF,KAAK,UACH,IAAI,iBAAiB,SACnB,QAAQ,YAAY,KAAK;SACpB,IAAI,YAAY,KAAK,GAC1B,QAAQ,YAAY,MAAM,KAAK,CAAC;SAC3B,IAAI,cAAc,KAAK,GAC5B,KAAK,MAAM,mBAAmB,MAAM,UAClC,QAAQ,YAAY,eAAe;GAG3C;EACF,CAAC;EAGH,QAAQ,OAAO,GAAG;EAElB,OAAO;CACT;CAEA,KAAK,MAAM,SAAS,QAClB,SAAS,KAAK,MAAM,KAAK,CAAC;CAG5B,OAAO;EACL;EACA;CACF;AACF"}
1
+ {"version":3,"file":"object-to-dom.mjs","names":[],"sources":["../../src/object-to-dom.ts"],"sourcesContent":["import { applyStyleObject } from './apply-style-object';\nimport type { DOMChildren, DOMInstance, DOMObject } from './types';\nimport { assertDOMObject, isDOMInstance, isDOMObject } from './utils';\n\nconst createOrReturn = (element: DOMObject['element']) =>\n typeof element === 'string' ? document.createElement(element) : element;\n\nconst getTagOrConstructorName = (element: DOMObject['element']) =>\n typeof element === 'string' ? element : element.constructor.name;\n\nfunction createChildlessDOM(obj: DOMObject) {\n const { element: inputElement, class: className, attrs, style, events } = obj;\n const element = createOrReturn(inputElement);\n\n if (className) {\n element.classList.add(className);\n }\n\n if (attrs) {\n for (const name in attrs) {\n switch (typeof attrs[name]) {\n case 'string':\n case 'number':\n element.setAttribute(name, attrs[name].toString());\n\n break;\n case 'boolean':\n if (attrs[name]) {\n element.setAttribute(name, '');\n }\n }\n }\n }\n\n if (style) {\n applyStyleObject(element as HTMLElement, style);\n }\n\n if (events) {\n for (const name in events) {\n element.addEventListener(name, event => {\n events[name as keyof typeof events]?.call(element, event as any);\n });\n }\n }\n\n return element;\n}\n\nexport function dom<const Input extends DOMObject[]>(...inputs: Input) {\n const elements: Element[] = [];\n const markers: Record<string, Element> = {};\n\n const visited = new WeakSet<DOMObject>();\n\n function visit(obj: DOMObject) {\n if (visited.has(obj)) {\n throw new Error(\n `Object of '${getTagOrConstructorName(obj.element)} has circular dependency.`\n );\n }\n\n assertDOMObject(obj);\n visited.add(obj);\n\n const element = createChildlessDOM(obj);\n\n if (obj.mark && !(obj.mark in markers)) {\n markers[obj.mark] = element;\n }\n\n if (Object.hasOwn(obj, 'children')) {\n (obj.children as DOMChildren[]).forEach(child => {\n switch (typeof child) {\n case 'string':\n case 'number':\n case 'boolean':\n element.appendChild(document.createTextNode(child.toString()));\n\n break;\n case 'object':\n if (child instanceof Element) {\n element.appendChild(child);\n } else if (isDOMObject(child)) {\n element.appendChild(visit(child));\n } else if (isDOMInstance(child)) {\n for (const instanceElement of child.elements) {\n element.appendChild(instanceElement);\n }\n }\n }\n });\n }\n\n visited.delete(obj);\n\n return element;\n }\n\n for (const input of inputs) {\n elements.push(visit(input));\n }\n\n return {\n elements,\n markers\n } as DOMInstance<Input>;\n}\n"],"mappings":";;;AAIA,MAAM,kBAAkB,YACtB,OAAO,YAAY,WAAW,SAAS,cAAc,OAAO,IAAI;AAElE,MAAM,2BAA2B,YAC/B,OAAO,YAAY,WAAW,UAAU,QAAQ,YAAY;AAE9D,SAAS,mBAAmB,KAAgB;CAC1C,MAAM,EAAE,SAAS,cAAc,OAAO,WAAW,OAAO,OAAO,WAAW;CAC1E,MAAM,UAAU,eAAe,YAAY;CAE3C,IAAI,WACF,QAAQ,UAAU,IAAI,SAAS;CAGjC,IAAI,OACF,KAAK,MAAM,QAAQ,OACjB,QAAQ,OAAO,MAAM,OAArB;EACE,KAAK;EACL,KAAK;GACH,QAAQ,aAAa,MAAM,MAAM,KAAK,CAAC,SAAS,CAAC;GAEjD;EACF,KAAK,WACH,IAAI,MAAM,OACR,QAAQ,aAAa,MAAM,EAAE;CAEnC;CAIJ,IAAI,OACF,iBAAiB,SAAwB,KAAK;CAGhD,IAAI,QACF,KAAK,MAAM,QAAQ,QACjB,QAAQ,iBAAiB,OAAM,UAAS;EACtC,OAAO,KAA4B,EAAE,KAAK,SAAS,KAAY;CACjE,CAAC;CAIL,OAAO;AACT;AAEA,SAAgB,IAAqC,GAAG,QAAe;CACrE,MAAM,WAAsB,CAAC;CAC7B,MAAM,UAAmC,CAAC;CAE1C,MAAM,0BAAU,IAAI,QAAmB;CAEvC,SAAS,MAAM,KAAgB;EAC7B,IAAI,QAAQ,IAAI,GAAG,GACjB,MAAM,IAAI,MACR,cAAc,wBAAwB,IAAI,OAAO,EAAE,0BACrD;EAGF,gBAAgB,GAAG;EACnB,QAAQ,IAAI,GAAG;EAEf,MAAM,UAAU,mBAAmB,GAAG;EAEtC,IAAI,IAAI,QAAQ,EAAE,IAAI,QAAQ,UAC5B,QAAQ,IAAI,QAAQ;EAGtB,IAAI,OAAO,OAAO,KAAK,UAAU,GAC/B,IAAK,SAA2B,SAAQ,UAAS;GAC/C,QAAQ,OAAO,OAAf;IACE,KAAK;IACL,KAAK;IACL,KAAK;KACH,QAAQ,YAAY,SAAS,eAAe,MAAM,SAAS,CAAC,CAAC;KAE7D;IACF,KAAK,UACH,IAAI,iBAAiB,SACnB,QAAQ,YAAY,KAAK;SACpB,IAAI,YAAY,KAAK,GAC1B,QAAQ,YAAY,MAAM,KAAK,CAAC;SAC3B,IAAI,cAAc,KAAK,GAC5B,KAAK,MAAM,mBAAmB,MAAM,UAClC,QAAQ,YAAY,eAAe;GAG3C;EACF,CAAC;EAGH,QAAQ,OAAO,GAAG;EAElB,OAAO;CACT;CAEA,KAAK,MAAM,SAAS,QAClB,SAAS,KAAK,MAAM,KAAK,CAAC;CAG5B,OAAO;EACL;EACA;CACF;AACF"}
@@ -6,7 +6,7 @@ function isDOMInstance(value) {
6
6
  function isDOMObject(value) {
7
7
  if (!isPlainObject(value)) return false;
8
8
  const keys = Object.keys(value);
9
- return keys.length > 0 && keys.every((key) => /^(element|mark|class|attrs|events|children)$/.test(key));
9
+ return keys.length > 0 && keys.every((key) => /^(element|mark|class|attrs|style|events|children)$/.test(key));
10
10
  }
11
11
  function isDOMChildren(value) {
12
12
  switch (typeof value) {
@@ -28,6 +28,7 @@ function assertDOMObject(obj) {
28
28
  if (Object.hasOwn(obj, "class") && typeof obj["class"] !== "string") throw new Error(`Property 'class' expected to be a typeof string, but got ${typeof obj["class"]}.`);
29
29
  if (Object.hasOwn(obj, "attrs") && !isPlainObject(obj["attrs"])) throw new Error(`Property 'attrs' expected to be a plain object, but got ${typeof obj["attrs"]}.`);
30
30
  if (Object.hasOwn(obj, "events") && !isPlainObject(obj["events"])) throw new Error(`Property 'events' expected to be a plain object, but got ${typeof obj["events"]}.`);
31
+ if (Object.hasOwn(obj, "style") && typeof obj["style"] !== "string" && !isPlainObject(obj["style"])) throw new Error(`Property 'style' expected to be a string or a plain object, but got ${typeof obj["style"]}.`);
31
32
  if (Object.hasOwn(obj, "children")) {
32
33
  if (!Array.isArray(obj["children"])) throw new Error(`Property 'children' expected to be a array of DOM children, but got ${typeof obj["children"]}.`);
33
34
  assertDOMObjectChildren(obj["children"], obj.element);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":[],"sources":["../../src/utils.ts"],"sourcesContent":["import type { DOMChildren, DOMInstance, DOMObject } from './types';\n\nconst isPlainObject = (value: unknown): value is Record<PropertyKey, unknown> =>\n Object.prototype.toString.call(value) === '[object Object]';\n\nexport function isDOMInstance(value: unknown): value is DOMInstance<[]> {\n return isPlainObject(value) && ['elements', 'markers'].every(prop => Object.hasOwn(value, prop));\n}\n\nexport function isDOMObject(value: unknown): value is DOMObject {\n if (!isPlainObject(value)) {\n return false;\n }\n\n const keys = Object.keys(value);\n\n return (\n keys.length > 0 && keys.every(key => /^(element|mark|class|attrs|events|children)$/.test(key))\n );\n}\n\nexport function isDOMChildren(value: unknown): value is DOMChildren {\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean':\n return true;\n case 'object':\n if (value instanceof Element || isDOMInstance(value) || isDOMObject(value)) {\n return true;\n }\n }\n\n return false;\n}\n\n/** @internal */\nexport function assertDOMObject(obj: DOMObject) {\n if (!isDOMObject(obj)) {\n throw new Error('Object is not a valid DOM object.');\n }\n\n if (!Object.hasOwn(obj, 'element')) {\n throw new Error(\n \"Missing property 'element', expected HTML or SVG tag name or instanceof Element.\"\n );\n }\n\n if (Object.hasOwn(obj, 'mark')) {\n if (typeof obj['mark'] !== 'string') {\n throw new Error(\n `Property 'mark' expected to be a typeof string, but got ${typeof obj['mark']}.`\n );\n } else if (obj['mark'].length <= 0) {\n throw new Error(\"Property 'mark' must be non-empty string.\");\n }\n }\n\n if (Object.hasOwn(obj, 'class') && typeof obj['class'] !== 'string') {\n throw new Error(\n `Property 'class' expected to be a typeof string, but got ${typeof obj['class']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'attrs') && !isPlainObject(obj['attrs'])) {\n throw new Error(\n `Property 'attrs' expected to be a plain object, but got ${typeof obj['attrs']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'events') && !isPlainObject(obj['events'])) {\n throw new Error(\n `Property 'events' expected to be a plain object, but got ${typeof obj['events']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'children')) {\n if (!Array.isArray(obj['children'])) {\n throw new Error(\n `Property 'children' expected to be a array of DOM children, but got ${typeof obj['children']}.`\n );\n }\n\n assertDOMObjectChildren(obj['children'], obj.element);\n }\n}\n\n/** @internal */\nexport function assertDOMObjectChildren(\n children: DOMChildren[],\n parentElement: DOMObject['element']\n) {\n children.forEach((child, index) => {\n if (!isDOMChildren(child)) {\n if (typeof parentElement === 'string') {\n throw new Error(\n `Tag '${parentElement}' has invalid children at index ${index}, expected to be a string, number, boolean, DOM Object, DOM Instance, or instance of Element.`\n );\n } else {\n throw new Error(\n `Element tag name '${parentElement.tagName}' has invalid children at index ${index}, expected to be a string, number, boolean, DOM Object, DOM Instance, or instance of Element.`\n );\n }\n }\n });\n}\n"],"mappings":";AAEA,MAAM,iBAAiB,UACrB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAE5C,SAAgB,cAAc,OAA0C;CACtE,OAAO,cAAc,KAAK,KAAK,CAAC,YAAY,SAAS,CAAC,CAAC,OAAM,SAAQ,OAAO,OAAO,OAAO,IAAI,CAAC;AACjG;AAEA,SAAgB,YAAY,OAAoC;CAC9D,IAAI,CAAC,cAAc,KAAK,GACtB,OAAO;CAGT,MAAM,OAAO,OAAO,KAAK,KAAK;CAE9B,OACE,KAAK,SAAS,KAAK,KAAK,OAAM,QAAO,+CAA+C,KAAK,GAAG,CAAC;AAEjG;AAEA,SAAgB,cAAc,OAAsC;CAClE,QAAQ,OAAO,OAAf;EACE,KAAK;EACL,KAAK;EACL,KAAK,WACH,OAAO;EACT,KAAK,UACH,IAAI,iBAAiB,WAAW,cAAc,KAAK,KAAK,YAAY,KAAK,GACvE,OAAO;CAEb;CAEA,OAAO;AACT;;AAGA,SAAgB,gBAAgB,KAAgB;CAC9C,IAAI,CAAC,YAAY,GAAG,GAClB,MAAM,IAAI,MAAM,mCAAmC;CAGrD,IAAI,CAAC,OAAO,OAAO,KAAK,SAAS,GAC/B,MAAM,IAAI,MACR,kFACF;CAGF,IAAI,OAAO,OAAO,KAAK,MAAM,GAAG;EAC9B,IAAI,OAAO,IAAI,YAAY,UACzB,MAAM,IAAI,MACR,2DAA2D,OAAO,IAAI,QAAQ,EAChF;OACK,IAAI,IAAI,OAAO,CAAC,UAAU,GAC/B,MAAM,IAAI,MAAM,2CAA2C;CAE/D;CAEA,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,OAAO,IAAI,aAAa,UACzD,MAAM,IAAI,MACR,4DAA4D,OAAO,IAAI,SAAS,EAClF;CAGF,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,CAAC,cAAc,IAAI,QAAQ,GAC5D,MAAM,IAAI,MACR,2DAA2D,OAAO,IAAI,SAAS,EACjF;CAGF,IAAI,OAAO,OAAO,KAAK,QAAQ,KAAK,CAAC,cAAc,IAAI,SAAS,GAC9D,MAAM,IAAI,MACR,4DAA4D,OAAO,IAAI,UAAU,EACnF;CAGF,IAAI,OAAO,OAAO,KAAK,UAAU,GAAG;EAClC,IAAI,CAAC,MAAM,QAAQ,IAAI,WAAW,GAChC,MAAM,IAAI,MACR,uEAAuE,OAAO,IAAI,YAAY,EAChG;EAGF,wBAAwB,IAAI,aAAa,IAAI,OAAO;CACtD;AACF;;AAGA,SAAgB,wBACd,UACA,eACA;CACA,SAAS,SAAS,OAAO,UAAU;EACjC,IAAI,CAAC,cAAc,KAAK,GAAG;GACzB,IAAI,OAAO,kBAAkB,UAC3B,MAAM,IAAI,MACR,QAAQ,cAAc,kCAAkC,MAAM,8FAChE;QAEA,MAAM,IAAI,MACR,qBAAqB,cAAc,QAAQ,kCAAkC,MAAM,8FACrF;EAEJ;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../../src/utils.ts"],"sourcesContent":["import type { DOMChildren, DOMInstance, DOMObject } from './types';\n\nconst isPlainObject = (value: unknown): value is Record<PropertyKey, unknown> =>\n Object.prototype.toString.call(value) === '[object Object]';\n\nexport function isDOMInstance(value: unknown): value is DOMInstance<[]> {\n return isPlainObject(value) && ['elements', 'markers'].every(prop => Object.hasOwn(value, prop));\n}\n\nexport function isDOMObject(value: unknown): value is DOMObject {\n if (!isPlainObject(value)) {\n return false;\n }\n\n const keys = Object.keys(value);\n\n return (\n keys.length > 0 &&\n keys.every(key => /^(element|mark|class|attrs|style|events|children)$/.test(key))\n );\n}\n\nexport function isDOMChildren(value: unknown): value is DOMChildren {\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean':\n return true;\n case 'object':\n if (value instanceof Element || isDOMInstance(value) || isDOMObject(value)) {\n return true;\n }\n }\n\n return false;\n}\n\n/** @internal */\nexport function assertDOMObject(obj: DOMObject) {\n if (!isDOMObject(obj)) {\n throw new Error('Object is not a valid DOM object.');\n }\n\n if (!Object.hasOwn(obj, 'element')) {\n throw new Error(\n \"Missing property 'element', expected HTML or SVG tag name or instanceof Element.\"\n );\n }\n\n if (Object.hasOwn(obj, 'mark')) {\n if (typeof obj['mark'] !== 'string') {\n throw new Error(\n `Property 'mark' expected to be a typeof string, but got ${typeof obj['mark']}.`\n );\n } else if (obj['mark'].length <= 0) {\n throw new Error(\"Property 'mark' must be non-empty string.\");\n }\n }\n\n if (Object.hasOwn(obj, 'class') && typeof obj['class'] !== 'string') {\n throw new Error(\n `Property 'class' expected to be a typeof string, but got ${typeof obj['class']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'attrs') && !isPlainObject(obj['attrs'])) {\n throw new Error(\n `Property 'attrs' expected to be a plain object, but got ${typeof obj['attrs']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'events') && !isPlainObject(obj['events'])) {\n throw new Error(\n `Property 'events' expected to be a plain object, but got ${typeof obj['events']}.`\n );\n }\n\n if (\n Object.hasOwn(obj, 'style') &&\n typeof obj['style'] !== 'string' &&\n !isPlainObject(obj['style'])\n ) {\n throw new Error(\n `Property 'style' expected to be a string or a plain object, but got ${typeof obj['style']}.`\n );\n }\n\n if (Object.hasOwn(obj, 'children')) {\n if (!Array.isArray(obj['children'])) {\n throw new Error(\n `Property 'children' expected to be a array of DOM children, but got ${typeof obj['children']}.`\n );\n }\n\n assertDOMObjectChildren(obj['children'], obj.element);\n }\n}\n\n/** @internal */\nexport function assertDOMObjectChildren(\n children: DOMChildren[],\n parentElement: DOMObject['element']\n) {\n children.forEach((child, index) => {\n if (!isDOMChildren(child)) {\n if (typeof parentElement === 'string') {\n throw new Error(\n `Tag '${parentElement}' has invalid children at index ${index}, expected to be a string, number, boolean, DOM Object, DOM Instance, or instance of Element.`\n );\n } else {\n throw new Error(\n `Element tag name '${parentElement.tagName}' has invalid children at index ${index}, expected to be a string, number, boolean, DOM Object, DOM Instance, or instance of Element.`\n );\n }\n }\n });\n}\n"],"mappings":";AAEA,MAAM,iBAAiB,UACrB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAE5C,SAAgB,cAAc,OAA0C;CACtE,OAAO,cAAc,KAAK,KAAK,CAAC,YAAY,SAAS,CAAC,CAAC,OAAM,SAAQ,OAAO,OAAO,OAAO,IAAI,CAAC;AACjG;AAEA,SAAgB,YAAY,OAAoC;CAC9D,IAAI,CAAC,cAAc,KAAK,GACtB,OAAO;CAGT,MAAM,OAAO,OAAO,KAAK,KAAK;CAE9B,OACE,KAAK,SAAS,KACd,KAAK,OAAM,QAAO,qDAAqD,KAAK,GAAG,CAAC;AAEpF;AAEA,SAAgB,cAAc,OAAsC;CAClE,QAAQ,OAAO,OAAf;EACE,KAAK;EACL,KAAK;EACL,KAAK,WACH,OAAO;EACT,KAAK,UACH,IAAI,iBAAiB,WAAW,cAAc,KAAK,KAAK,YAAY,KAAK,GACvE,OAAO;CAEb;CAEA,OAAO;AACT;;AAGA,SAAgB,gBAAgB,KAAgB;CAC9C,IAAI,CAAC,YAAY,GAAG,GAClB,MAAM,IAAI,MAAM,mCAAmC;CAGrD,IAAI,CAAC,OAAO,OAAO,KAAK,SAAS,GAC/B,MAAM,IAAI,MACR,kFACF;CAGF,IAAI,OAAO,OAAO,KAAK,MAAM,GAAG;EAC9B,IAAI,OAAO,IAAI,YAAY,UACzB,MAAM,IAAI,MACR,2DAA2D,OAAO,IAAI,QAAQ,EAChF;OACK,IAAI,IAAI,OAAO,CAAC,UAAU,GAC/B,MAAM,IAAI,MAAM,2CAA2C;CAE/D;CAEA,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,OAAO,IAAI,aAAa,UACzD,MAAM,IAAI,MACR,4DAA4D,OAAO,IAAI,SAAS,EAClF;CAGF,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,CAAC,cAAc,IAAI,QAAQ,GAC5D,MAAM,IAAI,MACR,2DAA2D,OAAO,IAAI,SAAS,EACjF;CAGF,IAAI,OAAO,OAAO,KAAK,QAAQ,KAAK,CAAC,cAAc,IAAI,SAAS,GAC9D,MAAM,IAAI,MACR,4DAA4D,OAAO,IAAI,UAAU,EACnF;CAGF,IACE,OAAO,OAAO,KAAK,OAAO,KAC1B,OAAO,IAAI,aAAa,YACxB,CAAC,cAAc,IAAI,QAAQ,GAE3B,MAAM,IAAI,MACR,uEAAuE,OAAO,IAAI,SAAS,EAC7F;CAGF,IAAI,OAAO,OAAO,KAAK,UAAU,GAAG;EAClC,IAAI,CAAC,MAAM,QAAQ,IAAI,WAAW,GAChC,MAAM,IAAI,MACR,uEAAuE,OAAO,IAAI,YAAY,EAChG;EAGF,wBAAwB,IAAI,aAAa,IAAI,OAAO;CACtD;AACF;;AAGA,SAAgB,wBACd,UACA,eACA;CACA,SAAS,SAAS,OAAO,UAAU;EACjC,IAAI,CAAC,cAAc,KAAK,GAAG;GACzB,IAAI,OAAO,kBAAkB,UAC3B,MAAM,IAAI,MACR,QAAQ,cAAc,kCAAkC,MAAM,8FAChE;QAEA,MAAM,IAAI,MACR,qBAAqB,cAAc,QAAQ,kCAAkC,MAAM,8FACrF;EAEJ;CACF,CAAC;AACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ettrloz/object-to-dom",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Parse object to DOM",
5
5
  "license": "MIT",
6
6
  "author": "Ettrloz",
@@ -0,0 +1,3 @@
1
+ import type { StyleObject } from './types';
2
+ export declare function applyStyleObject<CurrentElement extends HTMLElement | SVGElement>(element: CurrentElement, style: StyleObject): CurrentElement;
3
+ //# sourceMappingURL=apply-style-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-style-object.d.ts","sourceRoot":"","sources":["../src/apply-style-object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C,wBAAgB,gBAAgB,CAAC,cAAc,SAAS,WAAW,GAAG,UAAU,EAC9E,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,WAAW,GACjB,cAAc,CAiBhB"}
package/types/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './apply-style-object';
1
2
  export * from './object-to-dom';
2
3
  export * from './utils';
3
4
  export type * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AAExB,mBAAmB,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AAExB,mBAAmB,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"object-to-dom.d.ts","sourceRoot":"","sources":["../src/object-to-dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AA4CnE,wBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,GAyD9D,WAAW,CAAC,KAAK,CAAC,CACxB"}
1
+ {"version":3,"file":"object-to-dom.d.ts","sourceRoot":"","sources":["../src/object-to-dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAgDnE,wBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,GAyD9D,WAAW,CAAC,KAAK,CAAC,CACxB"}
package/types/types.d.ts CHANGED
@@ -2,11 +2,13 @@ type SameTagName = Extract<keyof HTMLElementTagNameMap, keyof SVGElementTagNameM
2
2
  export type HTMLSvgElementTagNameMap = HTMLElementTagNameMap & SVGElementTagNameMap;
3
3
  export type HTMLSvgElementEventMap = HTMLElementEventMap & SVGElementEventMap;
4
4
  export type ActualElement<CurrentElement extends keyof HTMLSvgElementTagNameMap | Element> = CurrentElement extends keyof HTMLSvgElementTagNameMap ? CurrentElement extends SameTagName ? HTMLElementTagNameMap[CurrentElement] | SVGElementTagNameMap[CurrentElement] : CurrentElement extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[CurrentElement] : CurrentElement extends keyof SVGElementTagNameMap ? SVGElementTagNameMap[CurrentElement] : never : CurrentElement extends Element ? CurrentElement : never;
5
+ export type StyleObject = string | Partial<CSSStyleDeclaration>;
5
6
  export type DOMObject<CurrentElement extends keyof HTMLSvgElementTagNameMap | Element = keyof HTMLSvgElementTagNameMap | Element> = {
6
7
  element: CurrentElement;
7
8
  mark?: string;
8
9
  class?: string;
9
10
  attrs?: Record<string, unknown>;
11
+ style?: StyleObject;
10
12
  events?: DOMEvent<CurrentElement>;
11
13
  children?: DOMChildren[];
12
14
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKnE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC,CAEtE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAU9D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAalE;AAED,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,QAgD7C;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,EAAE,EACvB,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,QAepC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKnE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC,CAEtE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAW9D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAalE;AAED,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,QA0D7C;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,EAAE,EACvB,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,QAepC"}