@litejs/dom 26.2.0 → 26.4.0
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.
- package/README.md +1 -1
- package/css.js +6 -3
- package/dom.js +47 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ Follow [Coding Style Guide](https://github.com/litejs/litejs/wiki/Style-Guide),
|
|
|
64
64
|
run tests `npm install; npm test`.
|
|
65
65
|
|
|
66
66
|
|
|
67
|
-
> Copyright (c) 2014-
|
|
67
|
+
> Copyright (c) 2014-2026 Lauri Rooden <lauri@rooden.ee>
|
|
68
68
|
[MIT License](https://litejs.com/MIT-LICENSE.txt) |
|
|
69
69
|
[GitHub repo](https://github.com/litejs/dom) |
|
|
70
70
|
[npm package](https://npmjs.org/package/@litejs/dom) |
|
package/css.js
CHANGED
|
@@ -8,7 +8,7 @@ exports.CSSStyleSheet = CSSStyleSheet
|
|
|
8
8
|
|
|
9
9
|
/* c8 ignore next */
|
|
10
10
|
var URL = global.URL || require("url").URL
|
|
11
|
-
, varRe = /var\((--[^,)]+)(
|
|
11
|
+
, varRe = /var\((--[^,)]+),?\s*([^)]*)\)/g
|
|
12
12
|
, CSS = exports.CSS = {
|
|
13
13
|
escape(sel) {
|
|
14
14
|
return ("" + sel).replace(/[^a-zA-Z0-9_\u00A0-\uFFFF-]/g, "\\$&").replace(/^(-?)([0-9])/, "$1\\3$2 ")
|
|
@@ -59,7 +59,10 @@ var URL = global.URL || require("url").URL
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
, toUrl = (dir) => new URL((dir || ".").replace(/\/+$/, "") + "/", "file:///").href
|
|
62
|
-
, read = (root, url, baseURI, enc = "utf8") => require("fs").readFileSync(
|
|
62
|
+
, read = (root, url, baseURI, enc = "utf8") => require("fs").readFileSync(
|
|
63
|
+
new URL(url, new URL((baseURI || ".") + "/", new URL((root || ".").replace(/\/+$/, "") + "/", "file:///" + process.cwd() + "/"))).pathname.replace(/^\/(?=\w:)|[+#].*/, ""),
|
|
64
|
+
enc
|
|
65
|
+
)
|
|
63
66
|
, plugins = exports.plugins = {
|
|
64
67
|
"data-uri": function(root, baseURI, v) {
|
|
65
68
|
var { DOMParser } = require("./dom.js")
|
|
@@ -88,7 +91,7 @@ var URL = global.URL || require("url").URL
|
|
|
88
91
|
q ? (q = str.indexOf("'") == -1 ? "'" : "\"", q + str.replace(q === "'" ? /\\(")/g : /\\(')/g, "$1")) + q :
|
|
89
92
|
c ? "" :
|
|
90
93
|
_.replace(/[\t\n]+/g, " ")
|
|
91
|
-
.replace(/
|
|
94
|
+
.replace(/ *([,;{}>~+\/]) */g, "$1")
|
|
92
95
|
.replace(/;(?=})/g, "")
|
|
93
96
|
.replace(/: +/g, ":")
|
|
94
97
|
.replace(/([ :,])0\.([0-9])/g, "$1.$2")
|
package/dom.js
CHANGED
|
@@ -19,6 +19,7 @@ var boolAttrs = {
|
|
|
19
19
|
, svgVoidElements = {
|
|
20
20
|
circle:1, ellipse:1, image:1, line:1, path:1, polygon:1, polyline:1, rect:1, stop:1, use:1,
|
|
21
21
|
}
|
|
22
|
+
, listeners = new WeakMap()
|
|
22
23
|
, rawTextElements = { SCRIPT: /<(?=\/script)/i, STYLE: /<(?=\/style)/i }
|
|
23
24
|
, rawTextEscape = { SCRIPT: /<(?=\/script|!--)/ig, STYLE: /<(?=\/style|!--)/ig }
|
|
24
25
|
, hasOwn = voidElements.hasOwnProperty
|
|
@@ -222,10 +223,10 @@ var boolAttrs = {
|
|
|
222
223
|
}
|
|
223
224
|
, Element = {
|
|
224
225
|
get firstElementChild() {
|
|
225
|
-
return getElement(this.childNodes, 0, 1
|
|
226
|
+
return getElement(this.childNodes, 0, 1)
|
|
226
227
|
},
|
|
227
228
|
get lastElementChild() {
|
|
228
|
-
return getElement(this.childNodes, this.childNodes.length - 1, -1
|
|
229
|
+
return getElement(this.childNodes, this.childNodes.length - 1, -1)
|
|
229
230
|
},
|
|
230
231
|
get nextElementSibling() {
|
|
231
232
|
return getSibling(this, 1, 1)
|
|
@@ -319,6 +320,18 @@ function Attr(node, name, value) {
|
|
|
319
320
|
this.value = "" + value
|
|
320
321
|
}
|
|
321
322
|
|
|
323
|
+
function Event(type, opts) {
|
|
324
|
+
Object.assign(this, {type, bubbles: false, cancelable: false, defaultPrevented: false}, opts)
|
|
325
|
+
}
|
|
326
|
+
Event.prototype = {
|
|
327
|
+
stopPropagation() {
|
|
328
|
+
this.bubbles = false
|
|
329
|
+
},
|
|
330
|
+
preventDefault() {
|
|
331
|
+
if (this.cancelable) this.defaultPrevented = true
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
322
335
|
function NamedNodeMap(node) {
|
|
323
336
|
Object.defineProperties(this, {
|
|
324
337
|
length: { get() { return this.names().length } },
|
|
@@ -398,15 +411,46 @@ extendNode(HTMLElement, Element, {
|
|
|
398
411
|
namespaceURI: "http://www.w3.org/1999/xhtml",
|
|
399
412
|
nodeType: 1,
|
|
400
413
|
tagName: null,
|
|
414
|
+
get elements() {
|
|
415
|
+
return this.tagName === "FORM" ? selector.find(this, "input,select,textarea,button") : undefined
|
|
416
|
+
},
|
|
417
|
+
get labels() {
|
|
418
|
+
if (!selector.matches(this, "input,select,textarea,button")) return
|
|
419
|
+
var labels = this.id ? selector.find(this.ownerDocument, "label[for='" + this.id + "']") : []
|
|
420
|
+
, parent = selector.closest(this, "label")
|
|
421
|
+
if (parent && labels.indexOf(parent) < 0) labels.push(parent)
|
|
422
|
+
return labels
|
|
423
|
+
},
|
|
401
424
|
get sheet() {
|
|
402
425
|
return makeSheet(this)
|
|
403
426
|
},
|
|
404
427
|
blur() {
|
|
405
428
|
this.ownerDocument.activeElement = this.ownerDocument.body || null
|
|
406
429
|
},
|
|
430
|
+
click() {
|
|
431
|
+
this.dispatchEvent(new Event("click", { bubbles: true, cancelable: true }))
|
|
432
|
+
},
|
|
407
433
|
closest(sel) {
|
|
408
434
|
return selector.closest(this, sel)
|
|
409
435
|
},
|
|
436
|
+
addEventListener(type, fn) {
|
|
437
|
+
var map = listeners.get(this)
|
|
438
|
+
if (!map) listeners.set(this, map = {})
|
|
439
|
+
;(map[type] || (map[type] = [])).push(fn)
|
|
440
|
+
},
|
|
441
|
+
dispatchEvent(ev) {
|
|
442
|
+
if (!ev.target) ev.target = this
|
|
443
|
+
var fns = (listeners.get(this) || {})[ev.type]
|
|
444
|
+
if (fns) fns.forEach(function(fn) { fn.call(this, ev) }, this)
|
|
445
|
+
if (ev.bubbles && this.parentNode && this.parentNode.dispatchEvent) {
|
|
446
|
+
this.parentNode.dispatchEvent(ev)
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
removeEventListener(type, fn) {
|
|
450
|
+
var fns = (listeners.get(this) || {})[type]
|
|
451
|
+
, i = fns ? fns.indexOf(fn) : -1
|
|
452
|
+
if (i > -1) fns.splice(i, 1)
|
|
453
|
+
},
|
|
410
454
|
focus() {
|
|
411
455
|
this.ownerDocument.activeElement = this
|
|
412
456
|
},
|
|
@@ -571,6 +615,7 @@ exports.CSSStyleSheet = CSSStyleSheet
|
|
|
571
615
|
exports.DOMParser = DOMParser
|
|
572
616
|
exports.Document = Document
|
|
573
617
|
exports.DocumentFragment = DocumentFragment
|
|
618
|
+
exports.Event = Event
|
|
574
619
|
exports.HTMLElement = HTMLElement
|
|
575
620
|
exports.Node = Node
|
|
576
621
|
exports.XMLSerializer = XMLSerializer
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@litejs/dom",
|
|
3
|
-
"version": "26.
|
|
3
|
+
"version": "26.4.0",
|
|
4
4
|
"description": "A small DOM library for server-side testing, rendering, and handling of HTML files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Lauri Rooden <lauri@rooden.ee>",
|
|
@@ -29,6 +29,6 @@
|
|
|
29
29
|
"url": "https://github.com/litejs/dom.git"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@litejs/cli": "
|
|
32
|
+
"@litejs/cli": "26.3.0"
|
|
33
33
|
}
|
|
34
34
|
}
|