ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
83 lines • 1.96 kB
JavaScript
export class Cursor {
constructor(element, nextSibling) {
this.element = element;
this.nextSibling = nextSibling;
}
}
export class RealDOMBounds {
constructor(bounds) {
this.bounds = bounds;
}
parentElement() {
return this.bounds.parentElement();
}
firstNode() {
return this.bounds.firstNode();
}
lastNode() {
return this.bounds.lastNode();
}
}
export class ConcreteBounds {
constructor(parentNode, first, last) {
this.parentNode = parentNode;
this.first = first;
this.last = last;
}
parentElement() {
return this.parentNode;
}
firstNode() {
return this.first;
}
lastNode() {
return this.last;
}
}
export class SingleNodeBounds {
constructor(parentNode, node) {
this.parentNode = parentNode;
this.node = node;
}
parentElement() {
return this.parentNode;
}
firstNode() {
return this.node;
}
lastNode() {
return this.node;
}
}
export function bounds(parent, first, last) {
return new ConcreteBounds(parent, first, last);
}
export function single(parent, node) {
return new SingleNodeBounds(parent, node);
}
export function move(bounds, reference) {
let parent = bounds.parentElement();
let first = bounds.firstNode();
let last = bounds.lastNode();
let node = first;
while (node) {
let next = node.nextSibling;
parent.insertBefore(node, reference);
if (node === last) return next;
node = next;
}
return null;
}
export function clear(bounds) {
let parent = bounds.parentElement();
let first = bounds.firstNode();
let last = bounds.lastNode();
let node = first;
while (node) {
let next = node.nextSibling;
parent.removeChild(node);
if (node === last) return next;
node = next;
}
return null;
}