pseudo-dom 0.1.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.
Files changed (125) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +1029 -0
  3. package/browser/pseudo-dom.js +5219 -0
  4. package/browser/pseudo-dom.min.js +1 -0
  5. package/dist/classes/PseudoEventListener.d.ts +96 -0
  6. package/dist/classes/PseudoEventListener.js +148 -0
  7. package/dist/classes/PseudoEventListener.min.js +1 -0
  8. package/dist/classes/PseudoHTMLDocument.d.ts +35 -0
  9. package/dist/classes/PseudoHTMLDocument.js +77 -0
  10. package/dist/classes/PseudoHTMLDocument.min.js +1 -0
  11. package/dist/classes/PseudoNodeList.d.ts +34 -0
  12. package/dist/classes/PseudoNodeList.js +65 -0
  13. package/dist/classes/PseudoNodeList.min.js +1 -0
  14. package/dist/classes.d.ts +20 -0
  15. package/dist/classes.js +31 -0
  16. package/dist/classes.min.js +1 -0
  17. package/dist/factories/generateDocument.d.ts +11 -0
  18. package/dist/factories/generateDocument.js +65 -0
  19. package/dist/factories/generateDocument.min.js +1 -0
  20. package/dist/factories/generateNode.d.ts +40 -0
  21. package/dist/factories/generateNode.js +118 -0
  22. package/dist/factories/generateNode.min.js +1 -0
  23. package/dist/factories/generateNodeList.d.ts +9 -0
  24. package/dist/factories/generateNodeList.js +13 -0
  25. package/dist/factories/generateNodeList.min.js +1 -0
  26. package/dist/factories.d.ts +5 -0
  27. package/dist/factories.js +23 -0
  28. package/dist/factories.min.js +1 -0
  29. package/dist/functions/getParentNodes.d.ts +9 -0
  30. package/dist/functions/getParentNodes.js +15 -0
  31. package/dist/functions/getParentNodes.min.js +1 -0
  32. package/dist/functions/getParentNodesFromAttribute.d.ts +14 -0
  33. package/dist/functions/getParentNodesFromAttribute.js +9 -0
  34. package/dist/functions/getParentNodesFromAttribute.min.js +1 -0
  35. package/dist/functions.d.ts +5 -0
  36. package/dist/functions.js +23 -0
  37. package/dist/functions.min.js +1 -0
  38. package/dist/interfaces/PseudoAnimation.d.ts +3 -0
  39. package/dist/interfaces/PseudoAnimation.js +5 -0
  40. package/dist/interfaces/PseudoAnimation.min.js +1 -0
  41. package/dist/interfaces/PseudoAttr.d.ts +11 -0
  42. package/dist/interfaces/PseudoAttr.js +5 -0
  43. package/dist/interfaces/PseudoAttr.min.js +1 -0
  44. package/dist/interfaces/PseudoDOMTokenList.d.ts +16 -0
  45. package/dist/interfaces/PseudoDOMTokenList.js +5 -0
  46. package/dist/interfaces/PseudoDOMTokenList.min.js +1 -0
  47. package/dist/interfaces/PseudoDocument.d.ts +3 -0
  48. package/dist/interfaces/PseudoDocument.js +5 -0
  49. package/dist/interfaces/PseudoDocument.min.js +1 -0
  50. package/dist/interfaces/PseudoDocumentFragment.d.ts +3 -0
  51. package/dist/interfaces/PseudoDocumentFragment.js +5 -0
  52. package/dist/interfaces/PseudoDocumentFragment.min.js +1 -0
  53. package/dist/interfaces/PseudoElement.d.ts +678 -0
  54. package/dist/interfaces/PseudoElement.js +5 -0
  55. package/dist/interfaces/PseudoElement.min.js +1 -0
  56. package/dist/interfaces/PseudoEvent.d.ts +79 -0
  57. package/dist/interfaces/PseudoEvent.js +10 -0
  58. package/dist/interfaces/PseudoEvent.min.js +1 -0
  59. package/dist/interfaces/PseudoEventTarget.d.ts +46 -0
  60. package/dist/interfaces/PseudoEventTarget.js +5 -0
  61. package/dist/interfaces/PseudoEventTarget.min.js +1 -0
  62. package/dist/interfaces/PseudoHTMLCollection.d.ts +2 -0
  63. package/dist/interfaces/PseudoHTMLCollection.js +5 -0
  64. package/dist/interfaces/PseudoHTMLCollection.min.js +1 -0
  65. package/dist/interfaces/PseudoHTMLElement.d.ts +22 -0
  66. package/dist/interfaces/PseudoHTMLElement.js +5 -0
  67. package/dist/interfaces/PseudoHTMLElement.min.js +1 -0
  68. package/dist/interfaces/PseudoHTMLSlotElement.d.ts +3 -0
  69. package/dist/interfaces/PseudoHTMLSlotElement.js +5 -0
  70. package/dist/interfaces/PseudoHTMLSlotElement.min.js +1 -0
  71. package/dist/interfaces/PseudoNamedNodeMap.d.ts +11 -0
  72. package/dist/interfaces/PseudoNamedNodeMap.js +5 -0
  73. package/dist/interfaces/PseudoNamedNodeMap.min.js +1 -0
  74. package/dist/interfaces/PseudoNode.d.ts +179 -0
  75. package/dist/interfaces/PseudoNode.js +5 -0
  76. package/dist/interfaces/PseudoNode.min.js +1 -0
  77. package/dist/interfaces/PseudoShadowRoot.d.ts +3 -0
  78. package/dist/interfaces/PseudoShadowRoot.js +5 -0
  79. package/dist/interfaces/PseudoShadowRoot.min.js +1 -0
  80. package/dist/main.d.ts +29 -0
  81. package/dist/main.js +75 -0
  82. package/dist/main.min.js +1 -0
  83. package/dist/services/AnimationService.d.ts +4 -0
  84. package/dist/services/AnimationService.js +16 -0
  85. package/dist/services/AnimationService.min.js +1 -0
  86. package/dist/services/AttrService.d.ts +31 -0
  87. package/dist/services/AttrService.js +57 -0
  88. package/dist/services/AttrService.min.js +1 -0
  89. package/dist/services/DOMTokenListService.d.ts +33 -0
  90. package/dist/services/DOMTokenListService.js +117 -0
  91. package/dist/services/DOMTokenListService.min.js +1 -0
  92. package/dist/services/DocumentFragmentService.d.ts +4 -0
  93. package/dist/services/DocumentFragmentService.js +9 -0
  94. package/dist/services/DocumentFragmentService.min.js +1 -0
  95. package/dist/services/DocumentService.d.ts +4 -0
  96. package/dist/services/DocumentService.js +9 -0
  97. package/dist/services/DocumentService.min.js +1 -0
  98. package/dist/services/ElementService.d.ts +95 -0
  99. package/dist/services/ElementService.js +205 -0
  100. package/dist/services/ElementService.min.js +1 -0
  101. package/dist/services/EventService.d.ts +106 -0
  102. package/dist/services/EventService.js +216 -0
  103. package/dist/services/EventService.min.js +1 -0
  104. package/dist/services/EventTargetService.d.ts +52 -0
  105. package/dist/services/EventTargetService.js +163 -0
  106. package/dist/services/EventTargetService.min.js +1 -0
  107. package/dist/services/HTMLCollectionService.d.ts +3 -0
  108. package/dist/services/HTMLCollectionService.js +8 -0
  109. package/dist/services/HTMLCollectionService.min.js +1 -0
  110. package/dist/services/HTMLElementService.d.ts +37 -0
  111. package/dist/services/HTMLElementService.js +68 -0
  112. package/dist/services/HTMLElementService.min.js +1 -0
  113. package/dist/services/HTMLSlotElementService.d.ts +4 -0
  114. package/dist/services/HTMLSlotElementService.js +9 -0
  115. package/dist/services/HTMLSlotElementService.min.js +1 -0
  116. package/dist/services/NamedNodeMapService.d.ts +23 -0
  117. package/dist/services/NamedNodeMapService.js +77 -0
  118. package/dist/services/NamedNodeMapService.min.js +1 -0
  119. package/dist/services/NodeService.d.ts +111 -0
  120. package/dist/services/NodeService.js +230 -0
  121. package/dist/services/NodeService.min.js +1 -0
  122. package/dist/services/ShadowRootService.d.ts +4 -0
  123. package/dist/services/ShadowRootService.js +9 -0
  124. package/dist/services/ShadowRootService.min.js +1 -0
  125. package/package.json +58 -0
@@ -0,0 +1,65 @@
1
+ 'use strict'
2
+
3
+ require('core-js/modules/esnext.iterator.constructor.js')
4
+ require('core-js/modules/esnext.iterator.map.js')
5
+ Object.defineProperty(exports, '__esModule', {
6
+ value: true
7
+ })
8
+ exports.PseudoNodeList = void 0
9
+ /**
10
+ * @file Substitute for the NodeList interface.
11
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
12
+ * @version 1.0.0
13
+ */
14
+ const LinkedTreeList_1 = require('collect-your-stuff/dist/collections/linked-tree-list/LinkedTreeList')
15
+ /**
16
+ * A NodeList, like the DOM one, iterates over the nodes themselves (the data stored in each TreeLinker), rather than
17
+ * the linkers that hold them.
18
+ * @class
19
+ * @augments LinkedTreeList
20
+ */
21
+ class PseudoNodeList extends LinkedTreeList_1.LinkedTreeList {
22
+ /**
23
+ * Iterate over the nodes in this list.
24
+ * @returns {Iterator}
25
+ */
26
+ [Symbol.iterator] () {
27
+ const linkers = super[Symbol.iterator]()
28
+ return {
29
+ next: () => {
30
+ const result = linkers.next()
31
+ return result.done
32
+ ? result
33
+ : {
34
+ done: false,
35
+ value: result.value.data
36
+ }
37
+ }
38
+ }
39
+ }
40
+
41
+ /**
42
+ * Iterate over [index, node] pairs.
43
+ * @returns {Iterator}
44
+ */
45
+ entries () {
46
+ return Array.from(this).map((node, index) => [index, node])[Symbol.iterator]()
47
+ }
48
+
49
+ /**
50
+ * Iterate over the indexes.
51
+ * @returns {Iterator}
52
+ */
53
+ keys () {
54
+ return Array.from(this).map((node, index) => index)[Symbol.iterator]()
55
+ }
56
+
57
+ /**
58
+ * Iterate over the nodes.
59
+ * @returns {Iterator}
60
+ */
61
+ values () {
62
+ return Array.from(this)[Symbol.iterator]()
63
+ }
64
+ }
65
+ exports.PseudoNodeList = PseudoNodeList
@@ -0,0 +1 @@
1
+ "use strict";require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.map.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.PseudoNodeList=void 0;const LinkedTreeList_1=require("collect-your-stuff/dist/collections/linked-tree-list/LinkedTreeList");class PseudoNodeList extends LinkedTreeList_1.LinkedTreeList{[Symbol.iterator](){const e=super[Symbol.iterator]();return{next:()=>{const r=e.next();return r.done?r:{done:!1,value:r.value.data}}}}entries(){return Array.from(this).map((e,r)=>[r,e])[Symbol.iterator]()}keys(){return Array.from(this).map((e,r)=>r)[Symbol.iterator]()}values(){return Array.from(this)[Symbol.iterator]()}}exports.PseudoNodeList=PseudoNodeList;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file All of the Pseudo Dom classes for replicating DOM structure.
3
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
4
+ * @version 1.0.0
5
+ */
6
+ import { EventService as PseudoEvent } from './services/EventService';
7
+ import PseudoEventTarget from './services/EventTargetService';
8
+ import { NodeService as PseudoNode } from './services/NodeService';
9
+ import { ElementService as PseudoElement } from './services/ElementService';
10
+ import { HTMLElementService as PseudoHTMLElement } from './services/HTMLElementService';
11
+ import PseudoHTMLDocument from './classes/PseudoHTMLDocument';
12
+ declare const _default: {
13
+ PseudoEvent: typeof PseudoEvent;
14
+ PseudoEventTarget: typeof PseudoEventTarget;
15
+ PseudoNode: typeof PseudoNode;
16
+ PseudoElement: typeof PseudoElement;
17
+ PseudoHTMLElement: typeof PseudoHTMLElement;
18
+ PseudoHTMLDocument: typeof PseudoHTMLDocument;
19
+ };
20
+ export default _default;
@@ -0,0 +1,31 @@
1
+ 'use strict'
2
+
3
+ /**
4
+ * @file All of the Pseudo Dom classes for replicating DOM structure.
5
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
6
+ * @version 1.0.0
7
+ */
8
+ const __importDefault = void 0 && (void 0).__importDefault || function (mod) {
9
+ return mod && mod.__esModule
10
+ ? mod
11
+ : {
12
+ default: mod
13
+ }
14
+ }
15
+ Object.defineProperty(exports, '__esModule', {
16
+ value: true
17
+ })
18
+ const EventService_1 = require('./services/EventService')
19
+ const EventTargetService_1 = __importDefault(require('./services/EventTargetService'))
20
+ const NodeService_1 = require('./services/NodeService')
21
+ const ElementService_1 = require('./services/ElementService')
22
+ const HTMLElementService_1 = require('./services/HTMLElementService')
23
+ const PseudoHTMLDocument_1 = __importDefault(require('./classes/PseudoHTMLDocument'))
24
+ exports.default = {
25
+ PseudoEvent: EventService_1.EventService,
26
+ PseudoEventTarget: EventTargetService_1.default,
27
+ PseudoNode: NodeService_1.NodeService,
28
+ PseudoElement: ElementService_1.ElementService,
29
+ PseudoHTMLElement: HTMLElementService_1.HTMLElementService,
30
+ PseudoHTMLDocument: PseudoHTMLDocument_1.default
31
+ }
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const EventService_1=require("./services/EventService"),EventTargetService_1=__importDefault(require("./services/EventTargetService")),NodeService_1=require("./services/NodeService"),ElementService_1=require("./services/ElementService"),HTMLElementService_1=require("./services/HTMLElementService"),PseudoHTMLDocument_1=__importDefault(require("./classes/PseudoHTMLDocument"));exports.default={PseudoEvent:EventService_1.EventService,PseudoEventTarget:EventTargetService_1.default,PseudoNode:NodeService_1.NodeService,PseudoElement:ElementService_1.ElementService,PseudoHTMLElement:HTMLElementService_1.HTMLElementService,PseudoHTMLDocument:PseudoHTMLDocument_1.default};
@@ -0,0 +1,11 @@
1
+ import PseudoEventTarget from '../services/EventTargetService';
2
+ /**
3
+ * Construct the Pseudo Dom to provide access to Dom objects which are otherwise not available outside the browser
4
+ * context.
5
+ * @function generateDocument
6
+ * @param {Object} root
7
+ * @param {Object} context
8
+ * @returns {Window|PseudoEventTarget}
9
+ */
10
+ declare const generateDocument: (root: Window | any, context?: object) => Window | PseudoEventTarget;
11
+ export default generateDocument;
@@ -0,0 +1,65 @@
1
+ 'use strict'
2
+
3
+ const __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule
5
+ ? mod
6
+ : {
7
+ default: mod
8
+ }
9
+ }
10
+ Object.defineProperty(exports, '__esModule', {
11
+ value: true
12
+ })
13
+ const EventTargetService_1 = __importDefault(require('../services/EventTargetService'))
14
+ const NodeService_1 = require('../services/NodeService')
15
+ const ElementService_1 = require('../services/ElementService')
16
+ const HTMLElementService_1 = require('../services/HTMLElementService')
17
+ const PseudoHTMLDocument_1 = __importDefault(require('../classes/PseudoHTMLDocument'))
18
+ /**
19
+ * Construct the Pseudo Dom to provide access to Dom objects which are otherwise not available outside the browser
20
+ * context.
21
+ * @function generateDocument
22
+ * @param {Object} root
23
+ * @param {Object} context
24
+ * @returns {Window|PseudoEventTarget}
25
+ */
26
+ const generateDocument = (root, context = {}) => {
27
+ /**
28
+ *
29
+ * @type {Window|PseudoEventTarget}
30
+ */
31
+ const newWindow = typeof root.document === 'undefined' ? root : new EventTargetService_1.default()
32
+ /**
33
+ * @type {Node|PseudoNode}
34
+ */
35
+ const Node = root.Node || new NodeService_1.NodeService()
36
+ if (typeof newWindow.Node === 'undefined') {
37
+ newWindow.Node = Node
38
+ }
39
+ /**
40
+ *
41
+ * @type {Element|PseudoElement}
42
+ */
43
+ const Element = root.Element || new ElementService_1.ElementService()
44
+ if (typeof newWindow.Element === 'undefined') {
45
+ newWindow.Element = Element
46
+ }
47
+ /**
48
+ * Create an instance of HTMLElement if not available
49
+ * @type {HTMLElement|PseudoHTMLElement}
50
+ */
51
+ const HTMLElement = root.HTMLElement || new HTMLElementService_1.HTMLElementService()
52
+ if (typeof newWindow.HTMLElement === 'undefined') {
53
+ newWindow.HTMLElement = HTMLElement
54
+ }
55
+ /**
56
+ * Define document when not available
57
+ * @type {Document|PseudoHTMLDocument}
58
+ */
59
+ const document = root.document || new PseudoHTMLDocument_1.default()
60
+ if (typeof newWindow.document === 'undefined') {
61
+ newWindow.document = document
62
+ }
63
+ return context ? Object.assign(context, newWindow) : Object.assign(root, newWindow)
64
+ }
65
+ exports.default = generateDocument
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const EventTargetService_1=__importDefault(require("../services/EventTargetService")),NodeService_1=require("../services/NodeService"),ElementService_1=require("../services/ElementService"),HTMLElementService_1=require("../services/HTMLElementService"),PseudoHTMLDocument_1=__importDefault(require("../classes/PseudoHTMLDocument")),generateDocument=(e,t={})=>{const r=void 0===e.document?e:new EventTargetService_1.default,n=e.Node||new NodeService_1.NodeService;void 0===r.Node&&(r.Node=n);const c=e.Element||new ElementService_1.ElementService;void 0===r.Element&&(r.Element=c);const o=e.HTMLElement||new HTMLElementService_1.HTMLElementService;void 0===r.HTMLElement&&(r.HTMLElement=o);const i=e.document||new PseudoHTMLDocument_1.default;return void 0===r.document&&(r.document=i),t?Object.assign(t,r):Object.assign(e,r)};exports.default=generateDocument;
@@ -0,0 +1,40 @@
1
+ import { TreeLinker } from 'collect-your-stuff/dist/collections/linked-tree-list/TreeLinker';
2
+ import { NodeService } from '../services/NodeService';
3
+ import { PseudoNode } from '../interfaces/PseudoNode';
4
+ import { PseudoElement } from '../interfaces/PseudoElement';
5
+ /**
6
+ * A node which is stored in a TreeLinker and answers questions about its position in the tree by asking that linker.
7
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
8
+ * @class
9
+ * @augments NodeService
10
+ */
11
+ export declare class LinkedNode extends NodeService {
12
+ private readonly linker;
13
+ /**
14
+ * @param {TreeLinker} linker The linker holding this node
15
+ * @param {string|null} value The value of the node
16
+ * @constructor
17
+ */
18
+ constructor(linker: TreeLinker, value?: string | null);
19
+ get childNodes(): any;
20
+ get firstChild(): PseudoNode | null;
21
+ get isConnected(): boolean;
22
+ get lastChild(): PseudoNode | null;
23
+ get nextSibling(): PseudoNode | null;
24
+ get ownerDocument(): any;
25
+ get parentNode(): PseudoNode | null;
26
+ get parentElement(): PseudoElement | null;
27
+ get previousSibling(): PseudoNode | null;
28
+ appendChild(childNode: PseudoNode): PseudoNode;
29
+ getRootNode(): PseudoNode;
30
+ }
31
+ export declare class NodeFactory extends TreeLinker {
32
+ }
33
+ /**
34
+ * Create a TreeLinker class whose linkers each store a node (a LinkedNode) as their data, this can be used to build a
35
+ * tree (or list) of nodes from plain values.
36
+ * @function generateNode
37
+ * @returns {Function} The NodeFactory class (a TreeLinker) to use as the linker class
38
+ */
39
+ declare const generateNode: () => typeof NodeFactory;
40
+ export default generateNode;
@@ -0,0 +1,118 @@
1
+ 'use strict'
2
+
3
+ require('core-js/modules/esnext.iterator.constructor.js')
4
+ require('core-js/modules/esnext.iterator.reduce.js')
5
+ Object.defineProperty(exports, '__esModule', {
6
+ value: true
7
+ })
8
+ exports.NodeFactory = exports.LinkedNode = void 0
9
+ const TreeLinker_1 = require('collect-your-stuff/dist/collections/linked-tree-list/TreeLinker')
10
+ const NodeService_1 = require('../services/NodeService')
11
+ /**
12
+ * A node which is stored in a TreeLinker and answers questions about its position in the tree by asking that linker.
13
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
14
+ * @class
15
+ * @augments NodeService
16
+ */
17
+ class LinkedNode extends NodeService_1.NodeService {
18
+ /**
19
+ * @param {TreeLinker} linker The linker holding this node
20
+ * @param {string|null} value The value of the node
21
+ * @constructor
22
+ */
23
+ constructor (linker, value = '') {
24
+ super()
25
+ this.linker = linker
26
+ this.nodeValue = value
27
+ }
28
+
29
+ get childNodes () {
30
+ return this.linker.children
31
+ }
32
+
33
+ get firstChild () {
34
+ const children = this.linker.children
35
+ return children && children.first ? children.first.data : null
36
+ }
37
+
38
+ get isConnected () {
39
+ return !!this.linker.parent
40
+ }
41
+
42
+ get lastChild () {
43
+ const children = this.linker.children
44
+ return children && children.last ? children.last.data : null
45
+ }
46
+
47
+ get nextSibling () {
48
+ return this.linker.next ? this.linker.next.data : null
49
+ }
50
+
51
+ get ownerDocument () {
52
+ const root = this.linker.parent ? this.linker.rootParent : null
53
+ return root ? root.data : null
54
+ }
55
+
56
+ get parentNode () {
57
+ return this.linker.parent ? this.linker.parent.data : null
58
+ }
59
+
60
+ get parentElement () {
61
+ const parent = this.parentNode
62
+ return parent && parent.nodeType === NodeService_1.NodeService.ELEMENT_NODE ? parent : null
63
+ }
64
+
65
+ get previousSibling () {
66
+ return this.linker.prev ? this.linker.prev.data : null
67
+ }
68
+
69
+ appendChild (childNode) {
70
+ this.linker.next = childNode
71
+ childNode.prev = this.linker
72
+ return childNode
73
+ }
74
+
75
+ getRootNode () {
76
+ const root = this.linker.rootParent
77
+ return root ? root.data : this
78
+ }
79
+ }
80
+ exports.LinkedNode = LinkedNode
81
+ class NodeFactory extends TreeLinker_1.TreeLinker {}
82
+ exports.NodeFactory = NodeFactory
83
+ /**
84
+ * Create a TreeLinker class whose linkers each store a node (a LinkedNode) as their data, this can be used to build a
85
+ * tree (or list) of nodes from plain values.
86
+ * @function generateNode
87
+ * @returns {Function} The NodeFactory class (a TreeLinker) to use as the linker class
88
+ */
89
+ const generateNode = () => {
90
+ NodeFactory.fromArray = (values = [], LinkerClass = NodeFactory) => values.reduce((list, element) => {
91
+ if (typeof element !== 'object') {
92
+ element = {
93
+ data: element
94
+ }
95
+ }
96
+ const newElement = new LinkerClass(Object.assign({}, element, {
97
+ prev: list.tail
98
+ }))
99
+ newElement.data = new LinkedNode(newElement, element.data)
100
+ if (list.head === null) {
101
+ return {
102
+ head: newElement,
103
+ tail: newElement
104
+ }
105
+ }
106
+ list.tail.next = newElement
107
+ newElement.prev = list.tail
108
+ return {
109
+ head: list.head,
110
+ tail: newElement
111
+ }
112
+ }, {
113
+ head: null,
114
+ tail: null
115
+ })
116
+ return NodeFactory
117
+ }
118
+ exports.default = generateNode
@@ -0,0 +1 @@
1
+ "use strict";require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.reduce.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.NodeFactory=exports.LinkedNode=void 0;const TreeLinker_1=require("collect-your-stuff/dist/collections/linked-tree-list/TreeLinker"),NodeService_1=require("../services/NodeService");class LinkedNode extends NodeService_1.NodeService{constructor(e,t=""){super(),this.linker=e,this.nodeValue=t}get childNodes(){return this.linker.children}get firstChild(){const e=this.linker.children;return e&&e.first?e.first.data:null}get isConnected(){return!!this.linker.parent}get lastChild(){const e=this.linker.children;return e&&e.last?e.last.data:null}get nextSibling(){return this.linker.next?this.linker.next.data:null}get ownerDocument(){const e=this.linker.parent?this.linker.rootParent:null;return e?e.data:null}get parentNode(){return this.linker.parent?this.linker.parent.data:null}get parentElement(){const e=this.parentNode;return e&&e.nodeType===NodeService_1.NodeService.ELEMENT_NODE?e:null}get previousSibling(){return this.linker.prev?this.linker.prev.data:null}appendChild(e){return this.linker.next=e,e.prev=this.linker,e}getRootNode(){const e=this.linker.rootParent;return e?e.data:this}}exports.LinkedNode=LinkedNode;class NodeFactory extends TreeLinker_1.TreeLinker{}exports.NodeFactory=NodeFactory;const generateNode=()=>(NodeFactory.fromArray=(e=[],t=NodeFactory)=>e.reduce((e,r)=>{"object"!=typeof r&&(r={data:r});const n=new t(Object.assign({},r,{prev:e.tail}));return n.data=new LinkedNode(n,r.data),null===e.head?{head:n,tail:n}:(e.tail.next=n,n.prev=e.tail,{head:e.head,tail:n})},{head:null,tail:null}),NodeFactory);exports.default=generateNode;
@@ -0,0 +1,9 @@
1
+ import { PseudoNodeList } from '../classes/PseudoNodeList';
2
+ import { TreeLinker } from 'collect-your-stuff/dist/collections/linked-tree-list/TreeLinker';
3
+ /**
4
+ * Create a PseudoNodeList, optionally starting from an existing chain of linkers.
5
+ * @param {TreeLinker|null} [innerList=null]
6
+ * @returns {PseudoNodeList}
7
+ */
8
+ declare const generateNodeList: (innerList?: TreeLinker | null) => PseudoNodeList;
9
+ export default generateNodeList;
@@ -0,0 +1,13 @@
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
6
+ const PseudoNodeList_1 = require('../classes/PseudoNodeList')
7
+ /**
8
+ * Create a PseudoNodeList, optionally starting from an existing chain of linkers.
9
+ * @param {TreeLinker|null} [innerList=null]
10
+ * @returns {PseudoNodeList}
11
+ */
12
+ const generateNodeList = (innerList = null) => new PseudoNodeList_1.PseudoNodeList().initialize(innerList)
13
+ exports.default = generateNodeList
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const PseudoNodeList_1=require("../classes/PseudoNodeList"),generateNodeList=(e=null)=>(new PseudoNodeList_1.PseudoNodeList).initialize(e);exports.default=generateNodeList;
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ generateNode: () => typeof import("./factories/generateNode").NodeFactory;
3
+ nodeListFactory: (innerList?: import("collect-your-stuff/dist/collections/linked-tree-list/TreeLinker").TreeLinker | null) => import("./classes/PseudoNodeList").PseudoNodeList;
4
+ };
5
+ export default _default;
@@ -0,0 +1,23 @@
1
+ 'use strict'
2
+
3
+ const __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule
5
+ ? mod
6
+ : {
7
+ default: mod
8
+ }
9
+ }
10
+ Object.defineProperty(exports, '__esModule', {
11
+ value: true
12
+ })
13
+ /**
14
+ * @file All of the Pseudo Dom Helper functions for generating DOM objects.
15
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
16
+ * @version 1.0.0
17
+ */
18
+ const generateNode_1 = __importDefault(require('./factories/generateNode'))
19
+ const generateNodeList_1 = __importDefault(require('./factories/generateNodeList'))
20
+ exports.default = {
21
+ generateNode: generateNode_1.default,
22
+ nodeListFactory: generateNodeList_1.default
23
+ }
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const generateNode_1=__importDefault(require("./factories/generateNode")),generateNodeList_1=__importDefault(require("./factories/generateNodeList"));exports.default={generateNode:generateNode_1.default,nodeListFactory:generateNodeList_1.default};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * A helper selector function for retrieving all parent PseudoNode for the given child node.
3
+ * @param {PseudoNode} node
4
+ * @returns {Array.<PseudoNode>}
5
+ */
6
+ import { PseudoNode } from '../interfaces/PseudoNode';
7
+ import { PseudoEventTarget } from '../interfaces/PseudoEventTarget';
8
+ declare const getParentNodes: (node: PseudoEventTarget) => Array<PseudoNode>;
9
+ export default getParentNodes;
@@ -0,0 +1,15 @@
1
+ 'use strict'
2
+
3
+ const __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule
5
+ ? mod
6
+ : {
7
+ default: mod
8
+ }
9
+ }
10
+ Object.defineProperty(exports, '__esModule', {
11
+ value: true
12
+ })
13
+ const getParentNodesFromAttribute_1 = __importDefault(require('./getParentNodesFromAttribute'))
14
+ const getParentNodes = node => (0, getParentNodesFromAttribute_1.default)('', false, node)
15
+ exports.default = getParentNodes
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const getParentNodesFromAttribute_1=__importDefault(require("./getParentNodesFromAttribute")),getParentNodes=e=>(0,getParentNodesFromAttribute_1.default)("",!1,e);exports.default=getParentNodes;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A selector function for retrieving existing parent PseudoNode from the given child item.
3
+ * This function will check all the parents starting from node, and scan the attributes
4
+ * property for matches. The return array contains all matching parent ancestors.
5
+ * WARNING: This is a recursive function.
6
+ * @param {string} attr
7
+ * @param {number|string} value
8
+ * @param {PseudoNode} node
9
+ * @returns {Array.<PseudoNode>}
10
+ */
11
+ import { PseudoNode } from '../interfaces/PseudoNode';
12
+ import { PseudoEventTarget } from '../interfaces/PseudoEventTarget';
13
+ declare const getParentNodesFromAttribute: (attr: string, value: boolean | number | string, node: PseudoEventTarget | PseudoNode | any) => Array<PseudoNode>;
14
+ export default getParentNodesFromAttribute;
@@ -0,0 +1,9 @@
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
6
+ const getParentNodesFromAttribute = (attr, value, node) => {
7
+ return Object.keys(node.parentNode).length ? (node.parentNode[attr] || false) === value ? getParentNodesFromAttribute(attr, value, node.parentNode).concat([node.parentNode]) : getParentNodesFromAttribute(attr, value, node.parentNode) : []
8
+ }
9
+ exports.default = getParentNodesFromAttribute
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const getParentNodesFromAttribute=(e,t,r)=>Object.keys(r.parentNode).length?(r.parentNode[e]||!1)===t?getParentNodesFromAttribute(e,t,r.parentNode).concat([r.parentNode]):getParentNodesFromAttribute(e,t,r.parentNode):[];exports.default=getParentNodesFromAttribute;
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ getParentNodes: (node: import("./interfaces/PseudoEventTarget").PseudoEventTarget) => Array<import("./interfaces/PseudoNode").PseudoNode>;
3
+ getParentNodesFromAttribute: (attr: string, value: boolean | number | string, node: import("./interfaces/PseudoEventTarget").PseudoEventTarget | import("./interfaces/PseudoNode").PseudoNode | any) => Array<import("./interfaces/PseudoNode").PseudoNode>;
4
+ };
5
+ export default _default;
@@ -0,0 +1,23 @@
1
+ 'use strict'
2
+
3
+ const __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule
5
+ ? mod
6
+ : {
7
+ default: mod
8
+ }
9
+ }
10
+ Object.defineProperty(exports, '__esModule', {
11
+ value: true
12
+ })
13
+ /**
14
+ * @file Helper functions for managing interactions with DOM classes
15
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
16
+ * @version 1.0.0
17
+ */
18
+ const getParentNodes_1 = __importDefault(require('./functions/getParentNodes'))
19
+ const getParentNodesFromAttribute_1 = __importDefault(require('./functions/getParentNodesFromAttribute'))
20
+ exports.default = {
21
+ getParentNodes: getParentNodes_1.default,
22
+ getParentNodesFromAttribute: getParentNodesFromAttribute_1.default
23
+ }
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const getParentNodes_1=__importDefault(require("./functions/getParentNodes")),getParentNodesFromAttribute_1=__importDefault(require("./functions/getParentNodesFromAttribute"));exports.default={getParentNodes:getParentNodes_1.default,getParentNodesFromAttribute:getParentNodesFromAttribute_1.default};
@@ -0,0 +1,3 @@
1
+ import { PseudoEventTarget } from './PseudoEventTarget';
2
+ export interface PseudoAnimation extends PseudoEventTarget {
3
+ }
@@ -0,0 +1,5 @@
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1,11 @@
1
+ import { PseudoNode } from './PseudoNode';
2
+ import { PseudoElement } from './PseudoElement';
3
+ export interface PseudoAttr extends PseudoNode {
4
+ get localName(): string;
5
+ get name(): string;
6
+ get namespaceURI(): string;
7
+ get ownerElement(): PseudoElement | null;
8
+ get prefix(): string | null;
9
+ get value(): string;
10
+ set value(value: string);
11
+ }
@@ -0,0 +1,5 @@
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1,16 @@
1
+ export interface PseudoDOMTokenList {
2
+ get length(): number;
3
+ get value(): string;
4
+ set value(value: string);
5
+ item(index: number): string | null;
6
+ contains(token: string): boolean;
7
+ add(...tokens: string[]): void;
8
+ remove(...tokens: string[]): void;
9
+ replace(oldToken: string, newToken: string): boolean;
10
+ supports(token: string): boolean;
11
+ toggle(token: string, force: boolean): boolean;
12
+ entries(): Iterator<any>;
13
+ forEach(callback: Function, thisArg: any): void;
14
+ keys(): Iterator<any>;
15
+ values(): Iterator<any>;
16
+ }
@@ -0,0 +1,5 @@
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1,3 @@
1
+ import { PseudoNode } from './PseudoNode';
2
+ export interface PseudoDocument extends PseudoNode {
3
+ }
@@ -0,0 +1,5 @@
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1,3 @@
1
+ import { PseudoNode } from './PseudoNode';
2
+ export interface PseudoDocumentFragment extends PseudoNode {
3
+ }
@@ -0,0 +1,5 @@
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});