0
Fork 0
mirror of https://github.com/fastmail/Squire.git synced 2025-01-08 16:00:06 -05:00

Path contains format values

Add values of font size, font face, and color to the path. This allows
us to distinguish path changes to different formats.
This commit is contained in:
Andy Kauffman 2016-07-06 13:27:22 -04:00 committed by Neil Jenkins
parent 3428d61331
commit 964070ee46
5 changed files with 49 additions and 10 deletions

View file

@ -17,6 +17,11 @@ var START_TO_END = 1; // Range.START_TO_END
var END_TO_END = 2; // Range.END_TO_END var END_TO_END = 2; // Range.END_TO_END
var END_TO_START = 3; // Range.END_TO_START var END_TO_START = 3; // Range.END_TO_START
var HIGHLIGHT_CLASS = 'highlight';
var COLOUR_CLASS = 'colour';
var FONT_FAMILY_CLASS = 'font';
var FONT_SIZE_CLASS = 'size';
var ZWS = '\u200B'; var ZWS = '\u200B';
var win = doc.defaultView; var win = doc.defaultView;
@ -284,6 +289,20 @@ function getPath ( node, root ) {
if ( dir = node.dir ) { if ( dir = node.dir ) {
path += '[dir=' + dir + ']'; path += '[dir=' + dir + ']';
} }
if( classNames ) {
if ( indexOf.call( classNames, HIGHLIGHT_CLASS ) > -1 ) {
path += '[backgroundColor=' + node.style.backgroundColor.replace(/ /g,'') + ']';
}
if ( indexOf.call( classNames, COLOUR_CLASS ) > -1 ) {
path += '[color=' + node.style.color.replace(/ /g,'') + ']';
}
if ( indexOf.call( classNames, FONT_FAMILY_CLASS ) > -1 ) {
path += '[fontFamily=' + node.style.fontFamily.replace(/ /g,'') + ']';
}
if ( indexOf.call( classNames, FONT_SIZE_CLASS ) > -1 ) {
path += '[fontSize=' + node.style.fontSize + ']';
}
}
} }
} }
return path; return path;
@ -1695,7 +1714,7 @@ var styleToSemantic = {
regexp: notWS, regexp: notWS,
replace: function ( doc, colour ) { replace: function ( doc, colour ) {
return createElement( doc, 'SPAN', { return createElement( doc, 'SPAN', {
'class': 'highlight', 'class': HIGHLIGHT_CLASS,
style: 'background-color:' + colour style: 'background-color:' + colour
}); });
} }
@ -1704,7 +1723,7 @@ var styleToSemantic = {
regexp: notWS, regexp: notWS,
replace: function ( doc, colour ) { replace: function ( doc, colour ) {
return createElement( doc, 'SPAN', { return createElement( doc, 'SPAN', {
'class': 'colour', 'class': COLOUR_CLASS,
style: 'color:' + colour style: 'color:' + colour
}); });
} }
@ -1725,7 +1744,7 @@ var styleToSemantic = {
regexp: notWS, regexp: notWS,
replace: function ( doc, family ) { replace: function ( doc, family ) {
return createElement( doc, 'SPAN', { return createElement( doc, 'SPAN', {
'class': 'font', 'class': FONT_FAMILY_CLASS,
style: 'font-family:' + family style: 'font-family:' + family
}); });
} }
@ -1734,7 +1753,7 @@ var styleToSemantic = {
regexp: notWS, regexp: notWS,
replace: function ( doc, size ) { replace: function ( doc, size ) {
return createElement( doc, 'SPAN', { return createElement( doc, 'SPAN', {
'class': 'size', 'class': FONT_SIZE_CLASS,
style: 'font-size:' + size style: 'font-size:' + size
}); });
} }

File diff suppressed because one or more lines are too long

View file

@ -15,7 +15,7 @@ var styleToSemantic = {
regexp: notWS, regexp: notWS,
replace: function ( doc, colour ) { replace: function ( doc, colour ) {
return createElement( doc, 'SPAN', { return createElement( doc, 'SPAN', {
'class': 'highlight', 'class': HIGHLIGHT_CLASS,
style: 'background-color:' + colour style: 'background-color:' + colour
}); });
} }
@ -24,7 +24,7 @@ var styleToSemantic = {
regexp: notWS, regexp: notWS,
replace: function ( doc, colour ) { replace: function ( doc, colour ) {
return createElement( doc, 'SPAN', { return createElement( doc, 'SPAN', {
'class': 'colour', 'class': COLOUR_CLASS,
style: 'color:' + colour style: 'color:' + colour
}); });
} }
@ -45,7 +45,7 @@ var styleToSemantic = {
regexp: notWS, regexp: notWS,
replace: function ( doc, family ) { replace: function ( doc, family ) {
return createElement( doc, 'SPAN', { return createElement( doc, 'SPAN', {
'class': 'font', 'class': FONT_FAMILY_CLASS,
style: 'font-family:' + family style: 'font-family:' + family
}); });
} }
@ -54,7 +54,7 @@ var styleToSemantic = {
regexp: notWS, regexp: notWS,
replace: function ( doc, size ) { replace: function ( doc, size ) {
return createElement( doc, 'SPAN', { return createElement( doc, 'SPAN', {
'class': 'size', 'class': FONT_SIZE_CLASS,
style: 'font-size:' + size style: 'font-size:' + size
}); });
} }

View file

@ -13,6 +13,11 @@ var START_TO_END = 1; // Range.START_TO_END
var END_TO_END = 2; // Range.END_TO_END var END_TO_END = 2; // Range.END_TO_END
var END_TO_START = 3; // Range.END_TO_START var END_TO_START = 3; // Range.END_TO_START
var HIGHLIGHT_CLASS = 'highlight';
var COLOUR_CLASS = 'colour';
var FONT_FAMILY_CLASS = 'font';
var FONT_SIZE_CLASS = 'size';
var ZWS = '\u200B'; var ZWS = '\u200B';
var win = doc.defaultView; var win = doc.defaultView;

View file

@ -113,6 +113,20 @@ function getPath ( node, root ) {
if ( dir = node.dir ) { if ( dir = node.dir ) {
path += '[dir=' + dir + ']'; path += '[dir=' + dir + ']';
} }
if( classNames ) {
if ( indexOf.call( classNames, HIGHLIGHT_CLASS ) > -1 ) {
path += '[backgroundColor=' + node.style.backgroundColor.replace(/ /g,'') + ']';
}
if ( indexOf.call( classNames, COLOUR_CLASS ) > -1 ) {
path += '[color=' + node.style.color.replace(/ /g,'') + ']';
}
if ( indexOf.call( classNames, FONT_FAMILY_CLASS ) > -1 ) {
path += '[fontFamily=' + node.style.fontFamily.replace(/ /g,'') + ']';
}
if ( indexOf.call( classNames, FONT_SIZE_CLASS ) > -1 ) {
path += '[fontSize=' + node.style.fontSize + ']';
}
}
} }
} }
return path; return path;