fnp
/
fnpeditor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
integration wip: restoring caret position and editor scroll after returning to editor tab
[fnpeditor.git]
/
modules
/
documentCanvas
/
canvas
/
documentElement.js
diff --git
a/modules/documentCanvas/canvas/documentElement.js
b/modules/documentCanvas/canvas/documentElement.js
index
6d76bf4
..
3a89bd1
100644
(file)
--- a/
modules/documentCanvas/canvas/documentElement.js
+++ b/
modules/documentCanvas/canvas/documentElement.js
@@
-11,7
+11,7
@@
var DocumentElement = function(htmlElement, canvas) {
if(arguments.length === 0)
return;
this.canvas = canvas;
if(arguments.length === 0)
return;
this.canvas = canvas;
- this.
$element = $
(htmlElement);
+ this.
_setupDOMHandler
(htmlElement);
}
var elementTypeFromParams = function(params) {
}
var elementTypeFromParams = function(params) {
@@
-29,14
+29,19
@@
$.extend(DocumentElement, {
},
fromHTMLElement: function(htmlElement, canvas) {
},
fromHTMLElement: function(htmlElement, canvas) {
- if(htmlElement.nodeType === Node.ELEMENT_NODE)
+ var $element = $(htmlElement);
+ if(htmlElement.nodeType === Node.ELEMENT_NODE && $element.attr('wlxml-tag'))
return DocumentNodeElement.fromHTMLElement(htmlElement, canvas);
return DocumentNodeElement.fromHTMLElement(htmlElement, canvas);
- if(
htmlElement.nodeType === Node.TEXT_NODE
)
+ if(
$element.attr('wlxml-text') !== undefined || (htmlElement.nodeType === Node.TEXT_NODE && $element.parent().attr('wlxml-text') !== undefined)
)
return DocumentTextElement.fromHTMLElement(htmlElement, canvas);
return DocumentTextElement.fromHTMLElement(htmlElement, canvas);
+ return undefined;
}
});
$.extend(DocumentElement.prototype, {
}
});
$.extend(DocumentElement.prototype, {
+ _setupDOMHandler: function(htmlElement) {
+ this.$element = $(htmlElement);
+ },
dom: function() {
return this.$element;
},
dom: function() {
return this.$element;
},
@@
-47,6
+52,16
@@
$.extend(DocumentElement.prototype, {
return null;
},
return null;
},
+ parents: function() {
+ var parents = [],
+ parent = this.parent();
+ while(parent) {
+ parents.push(parent);
+ parent = parent.parent();
+ }
+ return parents;
+ },
+
sameNode: function(other) {
return other && (typeof other === typeof this) && other.dom()[0] === this.dom()[0];
},
sameNode: function(other) {
return other && (typeof other === typeof this) && other.dom()[0] === this.dom()[0];
},
@@
-61,6
+76,10
@@
$.extend(DocumentElement.prototype, {
detach: function() {
this.dom().detach();
this.canvas = null;
detach: function() {
this.dom().detach();
this.canvas = null;
+ },
+
+ markAsCurrent: function() {
+ this.canvas.markAsCurrent(this);
}
});
}
});
@@
-72,9
+91,10
@@
var DocumentNodeElement = function(htmlElement, canvas) {
$.extend(DocumentNodeElement, {
createDOM: function(params) {
$.extend(DocumentNodeElement, {
createDOM: function(params) {
- var dom = $('<div>').attr('wlxml-tag', params.tag);
+ var dom = $('<div>')
+ .attr('wlxml-tag', params.tag);
if(params.klass)
if(params.klass)
- dom.attr('wlxml-class', params.klass);
+ dom.attr('wlxml-class', params.klass
.replace(/\./g, '-')
);
return dom;
},
return dom;
},
@@
-175,7
+195,9
@@
var DocumentTextElement = function(htmlElement, canvas) {
$.extend(DocumentTextElement, {
createDOM: function(params) {
$.extend(DocumentTextElement, {
createDOM: function(params) {
- return $(document.createTextNode(params.text));
+ return $('<div>')
+ .attr('wlxml-text', '')
+ .text(params.text);
},
create: function(params, canvas) {
},
create: function(params, canvas) {
@@
-190,8
+212,15
@@
$.extend(DocumentTextElement, {
DocumentTextElement.prototype = new DocumentElement();
$.extend(DocumentTextElement.prototype, {
DocumentTextElement.prototype = new DocumentElement();
$.extend(DocumentTextElement.prototype, {
+ _setupDOMHandler: function(htmlElement) {
+ var $element = $(htmlElement);
+ if(htmlElement.nodeType === Node.TEXT_NODE)
+ this.$element = $element.parent();
+ else
+ this.$element = $element;
+ },
setText: function(text) {
setText: function(text) {
- this.dom()[0].data = text;
+ this.dom()
.contents()
[0].data = text;
},
getText: function() {
return this.dom().text();
},
getText: function() {
return this.dom().text();
@@
-291,7
+320,7
@@
$.extend(DocumentTextElement.prototype, {
succeedingChildren.forEach(function(child) {
newElement.append(child);
});
succeedingChildren.forEach(function(child) {
newElement.append(child);
});
- }
+ }
,
});
return {
});
return {