rev |
line source |
bsw/jbe@1309
|
1 wysihtml.commands.alignCenterStyle = (function() {
|
bsw/jbe@1309
|
2 var nodeOptions = {
|
bsw/jbe@1309
|
3 styleProperty: "textAlign",
|
bsw/jbe@1309
|
4 styleValue: "center",
|
bsw/jbe@1309
|
5 toggle: true
|
bsw/jbe@1309
|
6 };
|
bsw/jbe@1309
|
7
|
bsw/jbe@1309
|
8 return {
|
bsw/jbe@1309
|
9 exec: function(composer, command) {
|
bsw/jbe@1309
|
10 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
11 },
|
bsw/jbe@1309
|
12
|
bsw/jbe@1309
|
13 state: function(composer, command) {
|
bsw/jbe@1309
|
14 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
15 }
|
bsw/jbe@1309
|
16 };
|
bsw/jbe@1309
|
17 })();
|
bsw/jbe@1309
|
18
|
bsw/jbe@1309
|
19 wysihtml.commands.alignJustifyStyle = (function() {
|
bsw/jbe@1309
|
20 var nodeOptions = {
|
bsw/jbe@1309
|
21 styleProperty: "textAlign",
|
bsw/jbe@1309
|
22 styleValue: "justify",
|
bsw/jbe@1309
|
23 toggle: true
|
bsw/jbe@1309
|
24 };
|
bsw/jbe@1309
|
25
|
bsw/jbe@1309
|
26 return {
|
bsw/jbe@1309
|
27 exec: function(composer, command) {
|
bsw/jbe@1309
|
28 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
29 },
|
bsw/jbe@1309
|
30
|
bsw/jbe@1309
|
31 state: function(composer, command) {
|
bsw/jbe@1309
|
32 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
33 }
|
bsw/jbe@1309
|
34 };
|
bsw/jbe@1309
|
35 })();
|
bsw/jbe@1309
|
36
|
bsw/jbe@1309
|
37 wysihtml.commands.alignLeftStyle = (function() {
|
bsw/jbe@1309
|
38 var nodeOptions = {
|
bsw/jbe@1309
|
39 styleProperty: "textAlign",
|
bsw/jbe@1309
|
40 styleValue: "left",
|
bsw/jbe@1309
|
41 toggle: true
|
bsw/jbe@1309
|
42 };
|
bsw/jbe@1309
|
43
|
bsw/jbe@1309
|
44 return {
|
bsw/jbe@1309
|
45 exec: function(composer, command) {
|
bsw/jbe@1309
|
46 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
47 },
|
bsw/jbe@1309
|
48
|
bsw/jbe@1309
|
49 state: function(composer, command) {
|
bsw/jbe@1309
|
50 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
51 }
|
bsw/jbe@1309
|
52 };
|
bsw/jbe@1309
|
53 })();
|
bsw/jbe@1309
|
54
|
bsw/jbe@1309
|
55 wysihtml.commands.alignRightStyle = (function() {
|
bsw/jbe@1309
|
56 var nodeOptions = {
|
bsw/jbe@1309
|
57 styleProperty: "textAlign",
|
bsw/jbe@1309
|
58 styleValue: "right",
|
bsw/jbe@1309
|
59 toggle: true
|
bsw/jbe@1309
|
60 };
|
bsw/jbe@1309
|
61
|
bsw/jbe@1309
|
62 return {
|
bsw/jbe@1309
|
63 exec: function(composer, command) {
|
bsw/jbe@1309
|
64 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
65 },
|
bsw/jbe@1309
|
66
|
bsw/jbe@1309
|
67 state: function(composer, command) {
|
bsw/jbe@1309
|
68 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
69 }
|
bsw/jbe@1309
|
70 };
|
bsw/jbe@1309
|
71 })();
|
bsw/jbe@1309
|
72
|
bsw/jbe@1309
|
73 /* Sets text background color by inline styles */
|
bsw/jbe@1309
|
74 wysihtml.commands.bgColorStyle = (function() {
|
bsw/jbe@1309
|
75 return {
|
bsw/jbe@1309
|
76 exec: function(composer, command, color) {
|
bsw/jbe@1309
|
77 var colorVals = wysihtml.quirks.styleParser.parseColor("background-color:" + (color.color || color), "background-color"),
|
bsw/jbe@1309
|
78 colString;
|
bsw/jbe@1309
|
79
|
bsw/jbe@1309
|
80 if (colorVals) {
|
bsw/jbe@1309
|
81 colString = (colorVals[3] === 1 ? "rgb(" + [colorVals[0], colorVals[1], colorVals[2]].join(', ') : "rgba(" + colorVals.join(', ')) + ')';
|
bsw/jbe@1309
|
82 wysihtml.commands.formatInline.exec(composer, command, {styleProperty: 'backgroundColor', styleValue: colString});
|
bsw/jbe@1309
|
83 }
|
bsw/jbe@1309
|
84 },
|
bsw/jbe@1309
|
85
|
bsw/jbe@1309
|
86 state: function(composer, command, color) {
|
bsw/jbe@1309
|
87 var colorVals = color ? wysihtml.quirks.styleParser.parseColor("background-color:" + (color.color || color), "background-color") : null,
|
bsw/jbe@1309
|
88 colString;
|
bsw/jbe@1309
|
89
|
bsw/jbe@1309
|
90 if (colorVals) {
|
bsw/jbe@1309
|
91 colString = (colorVals[3] === 1 ? "rgb(" + [colorVals[0], colorVals[1], colorVals[2]].join(', ') : "rgba(" + colorVals.join(', ')) + ')';
|
bsw/jbe@1309
|
92 }
|
bsw/jbe@1309
|
93
|
bsw/jbe@1309
|
94 return wysihtml.commands.formatInline.state(composer, command, {styleProperty: 'backgroundColor', styleValue: colString});
|
bsw/jbe@1309
|
95 },
|
bsw/jbe@1309
|
96
|
bsw/jbe@1309
|
97 remove: function(composer, command) {
|
bsw/jbe@1309
|
98 return wysihtml.commands.formatInline.remove(composer, command, {styleProperty: 'backgroundColor'});
|
bsw/jbe@1309
|
99 },
|
bsw/jbe@1309
|
100
|
bsw/jbe@1309
|
101 stateValue: function(composer, command, props) {
|
bsw/jbe@1309
|
102 var st = this.state(composer, command),
|
bsw/jbe@1309
|
103 colorStr,
|
bsw/jbe@1309
|
104 val = false;
|
bsw/jbe@1309
|
105
|
bsw/jbe@1309
|
106 if (st && wysihtml.lang.object(st).isArray()) {
|
bsw/jbe@1309
|
107 st = st[0];
|
bsw/jbe@1309
|
108 }
|
bsw/jbe@1309
|
109
|
bsw/jbe@1309
|
110 if (st) {
|
bsw/jbe@1309
|
111 colorStr = st.getAttribute('style');
|
bsw/jbe@1309
|
112 if (colorStr) {
|
bsw/jbe@1309
|
113 val = wysihtml.quirks.styleParser.parseColor(colorStr, "background-color");
|
bsw/jbe@1309
|
114 return wysihtml.quirks.styleParser.unparseColor(val, props);
|
bsw/jbe@1309
|
115 }
|
bsw/jbe@1309
|
116 }
|
bsw/jbe@1309
|
117 return false;
|
bsw/jbe@1309
|
118 }
|
bsw/jbe@1309
|
119 };
|
bsw/jbe@1309
|
120 })();
|
bsw/jbe@1309
|
121
|
bsw/jbe@1309
|
122 wysihtml.commands.bold = (function() {
|
bsw/jbe@1309
|
123 var nodeOptions = {
|
bsw/jbe@1309
|
124 nodeName: "B",
|
bsw/jbe@1309
|
125 toggle: true
|
bsw/jbe@1309
|
126 };
|
bsw/jbe@1309
|
127
|
bsw/jbe@1309
|
128 return {
|
bsw/jbe@1309
|
129 exec: function(composer, command) {
|
bsw/jbe@1309
|
130 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
|
bsw/jbe@1309
|
131 },
|
bsw/jbe@1309
|
132
|
bsw/jbe@1309
|
133 state: function(composer, command) {
|
bsw/jbe@1309
|
134 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
|
bsw/jbe@1309
|
135 }
|
bsw/jbe@1309
|
136 };
|
bsw/jbe@1309
|
137 })();
|
bsw/jbe@1309
|
138
|
bsw/jbe@1309
|
139 /* Formats block for as a <pre><code class="classname"></code></pre> block
|
bsw/jbe@1309
|
140 * Useful in conjuction for sytax highlight utility: highlight.js
|
bsw/jbe@1309
|
141 *
|
bsw/jbe@1309
|
142 * Usage:
|
bsw/jbe@1309
|
143 *
|
bsw/jbe@1309
|
144 * editorInstance.composer.commands.exec("formatCode", "language-html");
|
bsw/jbe@1309
|
145 */
|
bsw/jbe@1309
|
146 wysihtml.commands.formatCode = (function() {
|
bsw/jbe@1309
|
147 return {
|
bsw/jbe@1309
|
148 exec: function(composer, command, classname) {
|
bsw/jbe@1309
|
149 var pre = this.state(composer)[0],
|
bsw/jbe@1309
|
150 code, range, selectedNodes;
|
bsw/jbe@1309
|
151
|
bsw/jbe@1309
|
152 if (pre) {
|
bsw/jbe@1309
|
153 // caret is already within a <pre><code>...</code></pre>
|
bsw/jbe@1309
|
154 composer.selection.executeAndRestore(function() {
|
bsw/jbe@1309
|
155 code = pre.querySelector("code");
|
bsw/jbe@1309
|
156 wysihtml.dom.replaceWithChildNodes(pre);
|
bsw/jbe@1309
|
157 if (code) {
|
bsw/jbe@1309
|
158 wysihtml.dom.replaceWithChildNodes(code);
|
bsw/jbe@1309
|
159 }
|
bsw/jbe@1309
|
160 });
|
bsw/jbe@1309
|
161 } else {
|
bsw/jbe@1309
|
162 // Wrap in <pre><code>...</code></pre>
|
bsw/jbe@1309
|
163 range = composer.selection.getRange();
|
bsw/jbe@1309
|
164 selectedNodes = range.extractContents();
|
bsw/jbe@1309
|
165 pre = composer.doc.createElement("pre");
|
bsw/jbe@1309
|
166 code = composer.doc.createElement("code");
|
bsw/jbe@1309
|
167
|
bsw/jbe@1309
|
168 if (classname) {
|
bsw/jbe@1309
|
169 code.className = classname;
|
bsw/jbe@1309
|
170 }
|
bsw/jbe@1309
|
171
|
bsw/jbe@1309
|
172 pre.appendChild(code);
|
bsw/jbe@1309
|
173 code.appendChild(selectedNodes);
|
bsw/jbe@1309
|
174 range.insertNode(pre);
|
bsw/jbe@1309
|
175 composer.selection.selectNode(pre);
|
bsw/jbe@1309
|
176 }
|
bsw/jbe@1309
|
177 },
|
bsw/jbe@1309
|
178
|
bsw/jbe@1309
|
179 state: function(composer) {
|
bsw/jbe@1309
|
180 var selectedNode = composer.selection.getSelectedNode(), node;
|
bsw/jbe@1309
|
181 if (selectedNode && selectedNode.nodeName && selectedNode.nodeName == "PRE"&&
|
bsw/jbe@1309
|
182 selectedNode.firstChild && selectedNode.firstChild.nodeName && selectedNode.firstChild.nodeName == "CODE") {
|
bsw/jbe@1309
|
183 return [selectedNode];
|
bsw/jbe@1309
|
184 } else {
|
bsw/jbe@1309
|
185 node = wysihtml.dom.getParentElement(selectedNode, { query: "pre code" });
|
bsw/jbe@1309
|
186 return node ? [node.parentNode] : false;
|
bsw/jbe@1309
|
187 }
|
bsw/jbe@1309
|
188 }
|
bsw/jbe@1309
|
189 };
|
bsw/jbe@1309
|
190 })();
|
bsw/jbe@1309
|
191
|
bsw/jbe@1309
|
192 /**
|
bsw/jbe@1309
|
193 * Inserts an <img>
|
bsw/jbe@1309
|
194 * If selection is already an image link, it removes it
|
bsw/jbe@1309
|
195 *
|
bsw/jbe@1309
|
196 * @example
|
bsw/jbe@1309
|
197 * // either ...
|
bsw/jbe@1309
|
198 * wysihtml.commands.insertImage.exec(composer, "insertImage", "http://www.google.de/logo.jpg");
|
bsw/jbe@1309
|
199 * // ... or ...
|
bsw/jbe@1309
|
200 * wysihtml.commands.insertImage.exec(composer, "insertImage", { src: "http://www.google.de/logo.jpg", title: "foo" });
|
bsw/jbe@1309
|
201 */
|
bsw/jbe@1309
|
202 wysihtml.commands.insertImage = (function() {
|
bsw/jbe@1309
|
203 var NODE_NAME = "IMG";
|
bsw/jbe@1309
|
204 return {
|
bsw/jbe@1309
|
205 exec: function(composer, command, value) {
|
bsw/jbe@1309
|
206 value = typeof(value) === "object" ? value : { src: value };
|
bsw/jbe@1309
|
207
|
bsw/jbe@1309
|
208 var doc = composer.doc,
|
bsw/jbe@1309
|
209 image = this.state(composer),
|
bsw/jbe@1309
|
210 textNode,
|
bsw/jbe@1309
|
211 parent;
|
bsw/jbe@1309
|
212
|
bsw/jbe@1309
|
213 // If image is selected and src ie empty, set the caret before it and delete the image
|
bsw/jbe@1309
|
214 if (image && !value.src) {
|
bsw/jbe@1309
|
215 composer.selection.setBefore(image);
|
bsw/jbe@1309
|
216 parent = image.parentNode;
|
bsw/jbe@1309
|
217 parent.removeChild(image);
|
bsw/jbe@1309
|
218
|
bsw/jbe@1309
|
219 // and it's parent <a> too if it hasn't got any other relevant child nodes
|
bsw/jbe@1309
|
220 wysihtml.dom.removeEmptyTextNodes(parent);
|
bsw/jbe@1309
|
221 if (parent.nodeName === "A" && !parent.firstChild) {
|
bsw/jbe@1309
|
222 composer.selection.setAfter(parent);
|
bsw/jbe@1309
|
223 parent.parentNode.removeChild(parent);
|
bsw/jbe@1309
|
224 }
|
bsw/jbe@1309
|
225
|
bsw/jbe@1309
|
226 // firefox and ie sometimes don't remove the image handles, even though the image got removed
|
bsw/jbe@1309
|
227 wysihtml.quirks.redraw(composer.element);
|
bsw/jbe@1309
|
228 return;
|
bsw/jbe@1309
|
229 }
|
bsw/jbe@1309
|
230
|
bsw/jbe@1309
|
231 // If image selected change attributes accordingly
|
bsw/jbe@1309
|
232 if (image) {
|
bsw/jbe@1309
|
233 for (var key in value) {
|
bsw/jbe@1309
|
234 if (value.hasOwnProperty(key)) {
|
bsw/jbe@1309
|
235 image.setAttribute(key === "className" ? "class" : key, value[key]);
|
bsw/jbe@1309
|
236 }
|
bsw/jbe@1309
|
237 }
|
bsw/jbe@1309
|
238 return;
|
bsw/jbe@1309
|
239 }
|
bsw/jbe@1309
|
240
|
bsw/jbe@1309
|
241 // Otherwise lets create the image
|
bsw/jbe@1309
|
242 image = doc.createElement(NODE_NAME);
|
bsw/jbe@1309
|
243
|
bsw/jbe@1309
|
244 for (var i in value) {
|
bsw/jbe@1309
|
245 image.setAttribute(i === "className" ? "class" : i, value[i]);
|
bsw/jbe@1309
|
246 }
|
bsw/jbe@1309
|
247
|
bsw/jbe@1309
|
248 composer.selection.insertNode(image);
|
bsw/jbe@1309
|
249 if (wysihtml.browser.hasProblemsSettingCaretAfterImg()) {
|
bsw/jbe@1309
|
250 textNode = doc.createTextNode(wysihtml.INVISIBLE_SPACE);
|
bsw/jbe@1309
|
251 composer.selection.insertNode(textNode);
|
bsw/jbe@1309
|
252 composer.selection.setAfter(textNode);
|
bsw/jbe@1309
|
253 } else {
|
bsw/jbe@1309
|
254 composer.selection.setAfter(image);
|
bsw/jbe@1309
|
255 }
|
bsw/jbe@1309
|
256 },
|
bsw/jbe@1309
|
257
|
bsw/jbe@1309
|
258 state: function(composer) {
|
bsw/jbe@1309
|
259 var doc = composer.doc,
|
bsw/jbe@1309
|
260 selectedNode,
|
bsw/jbe@1309
|
261 text,
|
bsw/jbe@1309
|
262 imagesInSelection;
|
bsw/jbe@1309
|
263
|
bsw/jbe@1309
|
264 if (!wysihtml.dom.hasElementWithTagName(doc, NODE_NAME)) {
|
bsw/jbe@1309
|
265 return false;
|
bsw/jbe@1309
|
266 }
|
bsw/jbe@1309
|
267
|
bsw/jbe@1309
|
268 selectedNode = composer.selection.getSelectedNode();
|
bsw/jbe@1309
|
269 if (!selectedNode) {
|
bsw/jbe@1309
|
270 return false;
|
bsw/jbe@1309
|
271 }
|
bsw/jbe@1309
|
272
|
bsw/jbe@1309
|
273 if (selectedNode.nodeName === NODE_NAME) {
|
bsw/jbe@1309
|
274 // This works perfectly in IE
|
bsw/jbe@1309
|
275 return selectedNode;
|
bsw/jbe@1309
|
276 }
|
bsw/jbe@1309
|
277
|
bsw/jbe@1309
|
278 if (selectedNode.nodeType !== wysihtml.ELEMENT_NODE) {
|
bsw/jbe@1309
|
279 return false;
|
bsw/jbe@1309
|
280 }
|
bsw/jbe@1309
|
281
|
bsw/jbe@1309
|
282 text = composer.selection.getText();
|
bsw/jbe@1309
|
283 text = wysihtml.lang.string(text).trim();
|
bsw/jbe@1309
|
284 if (text) {
|
bsw/jbe@1309
|
285 return false;
|
bsw/jbe@1309
|
286 }
|
bsw/jbe@1309
|
287
|
bsw/jbe@1309
|
288 imagesInSelection = composer.selection.getNodes(wysihtml.ELEMENT_NODE, function(node) {
|
bsw/jbe@1309
|
289 return node.nodeName === "IMG";
|
bsw/jbe@1309
|
290 });
|
bsw/jbe@1309
|
291
|
bsw/jbe@1309
|
292 if (imagesInSelection.length !== 1) {
|
bsw/jbe@1309
|
293 return false;
|
bsw/jbe@1309
|
294 }
|
bsw/jbe@1309
|
295
|
bsw/jbe@1309
|
296 return imagesInSelection[0];
|
bsw/jbe@1309
|
297 }
|
bsw/jbe@1309
|
298 };
|
bsw/jbe@1309
|
299 })();
|
bsw/jbe@1309
|
300
|
bsw/jbe@1309
|
301 wysihtml.commands.fontSize = (function() {
|
bsw/jbe@1309
|
302 var REG_EXP = /wysiwyg-font-size-[0-9a-z\-]+/g;
|
bsw/jbe@1309
|
303
|
bsw/jbe@1309
|
304 return {
|
bsw/jbe@1309
|
305 exec: function(composer, command, size) {
|
bsw/jbe@1309
|
306 wysihtml.commands.formatInline.exec(composer, command, {className: "wysiwyg-font-size-" + size, classRegExp: REG_EXP, toggle: true});
|
bsw/jbe@1309
|
307 },
|
bsw/jbe@1309
|
308
|
bsw/jbe@1309
|
309 state: function(composer, command, size) {
|
bsw/jbe@1309
|
310 return wysihtml.commands.formatInline.state(composer, command, {className: "wysiwyg-font-size-" + size});
|
bsw/jbe@1309
|
311 }
|
bsw/jbe@1309
|
312 };
|
bsw/jbe@1309
|
313 })();
|
bsw/jbe@1309
|
314
|
bsw/jbe@1309
|
315 /* Set font size by inline style */
|
bsw/jbe@1309
|
316 wysihtml.commands.fontSizeStyle = (function() {
|
bsw/jbe@1309
|
317 return {
|
bsw/jbe@1309
|
318 exec: function(composer, command, size) {
|
bsw/jbe@1309
|
319 size = size.size || size;
|
bsw/jbe@1309
|
320 if (!(/^\s*$/).test(size)) {
|
bsw/jbe@1309
|
321 wysihtml.commands.formatInline.exec(composer, command, {styleProperty: "fontSize", styleValue: size, toggle: false});
|
bsw/jbe@1309
|
322 }
|
bsw/jbe@1309
|
323 },
|
bsw/jbe@1309
|
324
|
bsw/jbe@1309
|
325 state: function(composer, command, size) {
|
bsw/jbe@1309
|
326 return wysihtml.commands.formatInline.state(composer, command, {styleProperty: "fontSize", styleValue: size || undefined});
|
bsw/jbe@1309
|
327 },
|
bsw/jbe@1309
|
328
|
bsw/jbe@1309
|
329 remove: function(composer, command) {
|
bsw/jbe@1309
|
330 return wysihtml.commands.formatInline.remove(composer, command, {styleProperty: "fontSize"});
|
bsw/jbe@1309
|
331 },
|
bsw/jbe@1309
|
332
|
bsw/jbe@1309
|
333 stateValue: function(composer, command) {
|
bsw/jbe@1309
|
334 var styleStr,
|
bsw/jbe@1309
|
335 st = this.state(composer, command);
|
bsw/jbe@1309
|
336
|
bsw/jbe@1309
|
337 if (st && wysihtml.lang.object(st).isArray()) {
|
bsw/jbe@1309
|
338 st = st[0];
|
bsw/jbe@1309
|
339 }
|
bsw/jbe@1309
|
340 if (st) {
|
bsw/jbe@1309
|
341 styleStr = st.getAttribute("style");
|
bsw/jbe@1309
|
342 if (styleStr) {
|
bsw/jbe@1309
|
343 return wysihtml.quirks.styleParser.parseFontSize(styleStr);
|
bsw/jbe@1309
|
344 }
|
bsw/jbe@1309
|
345 }
|
bsw/jbe@1309
|
346 return false;
|
bsw/jbe@1309
|
347 }
|
bsw/jbe@1309
|
348 };
|
bsw/jbe@1309
|
349 })();
|
bsw/jbe@1309
|
350
|
bsw/jbe@1309
|
351 wysihtml.commands.foreColor = (function() {
|
bsw/jbe@1309
|
352 var REG_EXP = /wysiwyg-color-[0-9a-z]+/g;
|
bsw/jbe@1309
|
353
|
bsw/jbe@1309
|
354 return {
|
bsw/jbe@1309
|
355 exec: function(composer, command, color) {
|
bsw/jbe@1309
|
356 wysihtml.commands.formatInline.exec(composer, command, {className: "wysiwyg-color-" + color, classRegExp: REG_EXP, toggle: true});
|
bsw/jbe@1309
|
357 },
|
bsw/jbe@1309
|
358
|
bsw/jbe@1309
|
359 state: function(composer, command, color) {
|
bsw/jbe@1309
|
360 return wysihtml.commands.formatInline.state(composer, command, {className: "wysiwyg-color-" + color});
|
bsw/jbe@1309
|
361 }
|
bsw/jbe@1309
|
362 };
|
bsw/jbe@1309
|
363 })();
|
bsw/jbe@1309
|
364
|
bsw/jbe@1309
|
365 /* Sets text color by inline styles */
|
bsw/jbe@1309
|
366 wysihtml.commands.foreColorStyle = (function() {
|
bsw/jbe@1309
|
367 return {
|
bsw/jbe@1309
|
368 exec: function(composer, command, color) {
|
bsw/jbe@1309
|
369 var colorVals, colString;
|
bsw/jbe@1309
|
370
|
bsw/jbe@1309
|
371 if (!color) { return; }
|
bsw/jbe@1309
|
372
|
bsw/jbe@1309
|
373 colorVals = wysihtml.quirks.styleParser.parseColor("color:" + (color.color || color), "color");
|
bsw/jbe@1309
|
374
|
bsw/jbe@1309
|
375 if (colorVals) {
|
bsw/jbe@1309
|
376 colString = (colorVals[3] === 1 ? "rgb(" + [colorVals[0], colorVals[1], colorVals[2]].join(", ") : "rgba(" + colorVals.join(', ')) + ')';
|
bsw/jbe@1309
|
377 wysihtml.commands.formatInline.exec(composer, command, {styleProperty: "color", styleValue: colString});
|
bsw/jbe@1309
|
378 }
|
bsw/jbe@1309
|
379 },
|
bsw/jbe@1309
|
380
|
bsw/jbe@1309
|
381 state: function(composer, command, color) {
|
bsw/jbe@1309
|
382 var colorVals = color ? wysihtml.quirks.styleParser.parseColor("color:" + (color.color || color), "color") : null,
|
bsw/jbe@1309
|
383 colString;
|
bsw/jbe@1309
|
384
|
bsw/jbe@1309
|
385
|
bsw/jbe@1309
|
386 if (colorVals) {
|
bsw/jbe@1309
|
387 colString = (colorVals[3] === 1 ? "rgb(" + [colorVals[0], colorVals[1], colorVals[2]].join(", ") : "rgba(" + colorVals.join(', ')) + ')';
|
bsw/jbe@1309
|
388 }
|
bsw/jbe@1309
|
389
|
bsw/jbe@1309
|
390 return wysihtml.commands.formatInline.state(composer, command, {styleProperty: "color", styleValue: colString});
|
bsw/jbe@1309
|
391 },
|
bsw/jbe@1309
|
392
|
bsw/jbe@1309
|
393 remove: function(composer, command) {
|
bsw/jbe@1309
|
394 return wysihtml.commands.formatInline.remove(composer, command, {styleProperty: "color"});
|
bsw/jbe@1309
|
395 },
|
bsw/jbe@1309
|
396
|
bsw/jbe@1309
|
397 stateValue: function(composer, command, props) {
|
bsw/jbe@1309
|
398 var st = this.state(composer, command),
|
bsw/jbe@1309
|
399 colorStr,
|
bsw/jbe@1309
|
400 val = false;
|
bsw/jbe@1309
|
401
|
bsw/jbe@1309
|
402 if (st && wysihtml.lang.object(st).isArray()) {
|
bsw/jbe@1309
|
403 st = st[0];
|
bsw/jbe@1309
|
404 }
|
bsw/jbe@1309
|
405
|
bsw/jbe@1309
|
406 if (st) {
|
bsw/jbe@1309
|
407 colorStr = st.getAttribute("style");
|
bsw/jbe@1309
|
408 if (colorStr) {
|
bsw/jbe@1309
|
409 val = wysihtml.quirks.styleParser.parseColor(colorStr, "color");
|
bsw/jbe@1309
|
410 return wysihtml.quirks.styleParser.unparseColor(val, props);
|
bsw/jbe@1309
|
411 }
|
bsw/jbe@1309
|
412 }
|
bsw/jbe@1309
|
413 return false;
|
bsw/jbe@1309
|
414 }
|
bsw/jbe@1309
|
415 };
|
bsw/jbe@1309
|
416 })();
|
bsw/jbe@1309
|
417
|
bsw/jbe@1309
|
418 wysihtml.commands.insertBlockQuote = (function() {
|
bsw/jbe@1309
|
419 var nodeOptions = {
|
bsw/jbe@1309
|
420 nodeName: "BLOCKQUOTE",
|
bsw/jbe@1309
|
421 toggle: true
|
bsw/jbe@1309
|
422 };
|
bsw/jbe@1309
|
423
|
bsw/jbe@1309
|
424 return {
|
bsw/jbe@1309
|
425 exec: function(composer, command) {
|
bsw/jbe@1309
|
426 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
427 },
|
bsw/jbe@1309
|
428
|
bsw/jbe@1309
|
429 state: function(composer, command) {
|
bsw/jbe@1309
|
430 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
431 }
|
bsw/jbe@1309
|
432 };
|
bsw/jbe@1309
|
433 })();
|
bsw/jbe@1309
|
434
|
bsw/jbe@1309
|
435 wysihtml.commands.insertHorizontalRule = (function() {
|
bsw/jbe@1309
|
436 return {
|
bsw/jbe@1309
|
437 exec: function(composer) {
|
bsw/jbe@1309
|
438 var node = composer.selection.getSelectedNode(),
|
bsw/jbe@1309
|
439 phrasingOnlyParent = wysihtml.dom.getParentElement(node, { query: wysihtml.PERMITTED_PHRASING_CONTENT_ONLY }, null, composer.editableArea),
|
bsw/jbe@1309
|
440 elem = document.createElement('hr'),
|
bsw/jbe@1309
|
441 range, idx;
|
bsw/jbe@1309
|
442
|
bsw/jbe@1309
|
443 // HR is not allowed into some elements (where only phrasing content is allowed)
|
bsw/jbe@1309
|
444 // thus the HR insertion must break out of those https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories
|
bsw/jbe@1309
|
445 if (phrasingOnlyParent) {
|
bsw/jbe@1309
|
446 composer.selection.splitElementAtCaret(phrasingOnlyParent, elem);
|
bsw/jbe@1309
|
447 } else {
|
bsw/jbe@1309
|
448 composer.selection.insertNode(elem);
|
bsw/jbe@1309
|
449 }
|
bsw/jbe@1309
|
450
|
bsw/jbe@1309
|
451 if (elem.nextSibling) {
|
bsw/jbe@1309
|
452 composer.selection.setBefore(elem.nextSibling);
|
bsw/jbe@1309
|
453 } else {
|
bsw/jbe@1309
|
454 composer.selection.setAfter(elem);
|
bsw/jbe@1309
|
455 }
|
bsw/jbe@1309
|
456 },
|
bsw/jbe@1309
|
457 state: function() {
|
bsw/jbe@1309
|
458 return false; // :(
|
bsw/jbe@1309
|
459 }
|
bsw/jbe@1309
|
460 };
|
bsw/jbe@1309
|
461 })();
|
bsw/jbe@1309
|
462
|
bsw/jbe@1309
|
463 wysihtml.commands.insertOrderedList = (function() {
|
bsw/jbe@1309
|
464 return {
|
bsw/jbe@1309
|
465 exec: function(composer, command) {
|
bsw/jbe@1309
|
466 wysihtml.commands.insertList.exec(composer, command, "OL");
|
bsw/jbe@1309
|
467 },
|
bsw/jbe@1309
|
468
|
bsw/jbe@1309
|
469 state: function(composer, command) {
|
bsw/jbe@1309
|
470 return wysihtml.commands.insertList.state(composer, command, "OL");
|
bsw/jbe@1309
|
471 }
|
bsw/jbe@1309
|
472 };
|
bsw/jbe@1309
|
473 })();
|
bsw/jbe@1309
|
474
|
bsw/jbe@1309
|
475 wysihtml.commands.insertUnorderedList = (function() {
|
bsw/jbe@1309
|
476 return {
|
bsw/jbe@1309
|
477 exec: function(composer, command) {
|
bsw/jbe@1309
|
478 wysihtml.commands.insertList.exec(composer, command, "UL");
|
bsw/jbe@1309
|
479 },
|
bsw/jbe@1309
|
480
|
bsw/jbe@1309
|
481 state: function(composer, command) {
|
bsw/jbe@1309
|
482 return wysihtml.commands.insertList.state(composer, command, "UL");
|
bsw/jbe@1309
|
483 }
|
bsw/jbe@1309
|
484 };
|
bsw/jbe@1309
|
485 })();
|
bsw/jbe@1309
|
486
|
bsw/jbe@1309
|
487 wysihtml.commands.italic = (function() {
|
bsw/jbe@1309
|
488 var nodeOptions = {
|
bsw/jbe@1309
|
489 nodeName: "I",
|
bsw/jbe@1309
|
490 toggle: true
|
bsw/jbe@1309
|
491 };
|
bsw/jbe@1309
|
492
|
bsw/jbe@1309
|
493 return {
|
bsw/jbe@1309
|
494 exec: function(composer, command) {
|
bsw/jbe@1309
|
495 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
|
bsw/jbe@1309
|
496 },
|
bsw/jbe@1309
|
497
|
bsw/jbe@1309
|
498 state: function(composer, command) {
|
bsw/jbe@1309
|
499 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
|
bsw/jbe@1309
|
500 }
|
bsw/jbe@1309
|
501 };
|
bsw/jbe@1309
|
502
|
bsw/jbe@1309
|
503 })();
|
bsw/jbe@1309
|
504
|
bsw/jbe@1309
|
505 wysihtml.commands.justifyCenter = (function() {
|
bsw/jbe@1309
|
506 var nodeOptions = {
|
bsw/jbe@1309
|
507 className: "wysiwyg-text-align-center",
|
bsw/jbe@1309
|
508 classRegExp: /wysiwyg-text-align-[0-9a-z]+/g,
|
bsw/jbe@1309
|
509 toggle: true
|
bsw/jbe@1309
|
510 };
|
bsw/jbe@1309
|
511
|
bsw/jbe@1309
|
512 return {
|
bsw/jbe@1309
|
513 exec: function(composer, command) {
|
bsw/jbe@1309
|
514 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
515 },
|
bsw/jbe@1309
|
516
|
bsw/jbe@1309
|
517 state: function(composer, command) {
|
bsw/jbe@1309
|
518 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
519 }
|
bsw/jbe@1309
|
520 };
|
bsw/jbe@1309
|
521
|
bsw/jbe@1309
|
522 })();
|
bsw/jbe@1309
|
523
|
bsw/jbe@1309
|
524 wysihtml.commands.justifyFull = (function() {
|
bsw/jbe@1309
|
525 var nodeOptions = {
|
bsw/jbe@1309
|
526 className: "wysiwyg-text-align-justify",
|
bsw/jbe@1309
|
527 classRegExp: /wysiwyg-text-align-[0-9a-z]+/g,
|
bsw/jbe@1309
|
528 toggle: true
|
bsw/jbe@1309
|
529 };
|
bsw/jbe@1309
|
530
|
bsw/jbe@1309
|
531 return {
|
bsw/jbe@1309
|
532 exec: function(composer, command) {
|
bsw/jbe@1309
|
533 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
534 },
|
bsw/jbe@1309
|
535
|
bsw/jbe@1309
|
536 state: function(composer, command) {
|
bsw/jbe@1309
|
537 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
538 }
|
bsw/jbe@1309
|
539 };
|
bsw/jbe@1309
|
540 })();
|
bsw/jbe@1309
|
541
|
bsw/jbe@1309
|
542 wysihtml.commands.justifyLeft = (function() {
|
bsw/jbe@1309
|
543 var nodeOptions = {
|
bsw/jbe@1309
|
544 className: "wysiwyg-text-align-left",
|
bsw/jbe@1309
|
545 classRegExp: /wysiwyg-text-align-[0-9a-z]+/g,
|
bsw/jbe@1309
|
546 toggle: true
|
bsw/jbe@1309
|
547 };
|
bsw/jbe@1309
|
548
|
bsw/jbe@1309
|
549 return {
|
bsw/jbe@1309
|
550 exec: function(composer, command) {
|
bsw/jbe@1309
|
551 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
552 },
|
bsw/jbe@1309
|
553
|
bsw/jbe@1309
|
554 state: function(composer, command) {
|
bsw/jbe@1309
|
555 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
556 }
|
bsw/jbe@1309
|
557 };
|
bsw/jbe@1309
|
558 })();
|
bsw/jbe@1309
|
559
|
bsw/jbe@1309
|
560 wysihtml.commands.justifyRight = (function() {
|
bsw/jbe@1309
|
561 var nodeOptions = {
|
bsw/jbe@1309
|
562 className: "wysiwyg-text-align-right",
|
bsw/jbe@1309
|
563 classRegExp: /wysiwyg-text-align-[0-9a-z]+/g,
|
bsw/jbe@1309
|
564 toggle: true
|
bsw/jbe@1309
|
565 };
|
bsw/jbe@1309
|
566
|
bsw/jbe@1309
|
567 return {
|
bsw/jbe@1309
|
568 exec: function(composer, command) {
|
bsw/jbe@1309
|
569 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
570 },
|
bsw/jbe@1309
|
571
|
bsw/jbe@1309
|
572 state: function(composer, command) {
|
bsw/jbe@1309
|
573 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
|
bsw/jbe@1309
|
574 }
|
bsw/jbe@1309
|
575 };
|
bsw/jbe@1309
|
576 })();
|
bsw/jbe@1309
|
577
|
bsw/jbe@1309
|
578 wysihtml.commands.subscript = (function() {
|
bsw/jbe@1309
|
579 var nodeOptions = {
|
bsw/jbe@1309
|
580 nodeName: "SUB",
|
bsw/jbe@1309
|
581 toggle: true
|
bsw/jbe@1309
|
582 };
|
bsw/jbe@1309
|
583
|
bsw/jbe@1309
|
584 return {
|
bsw/jbe@1309
|
585 exec: function(composer, command) {
|
bsw/jbe@1309
|
586 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
|
bsw/jbe@1309
|
587 },
|
bsw/jbe@1309
|
588
|
bsw/jbe@1309
|
589 state: function(composer, command) {
|
bsw/jbe@1309
|
590 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
|
bsw/jbe@1309
|
591 }
|
bsw/jbe@1309
|
592 };
|
bsw/jbe@1309
|
593
|
bsw/jbe@1309
|
594 })();
|
bsw/jbe@1309
|
595
|
bsw/jbe@1309
|
596 wysihtml.commands.superscript = (function() {
|
bsw/jbe@1309
|
597 var nodeOptions = {
|
bsw/jbe@1309
|
598 nodeName: "SUP",
|
bsw/jbe@1309
|
599 toggle: true
|
bsw/jbe@1309
|
600 };
|
bsw/jbe@1309
|
601
|
bsw/jbe@1309
|
602 return {
|
bsw/jbe@1309
|
603 exec: function(composer, command) {
|
bsw/jbe@1309
|
604 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
|
bsw/jbe@1309
|
605 },
|
bsw/jbe@1309
|
606
|
bsw/jbe@1309
|
607 state: function(composer, command) {
|
bsw/jbe@1309
|
608 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
|
bsw/jbe@1309
|
609 }
|
bsw/jbe@1309
|
610 };
|
bsw/jbe@1309
|
611
|
bsw/jbe@1309
|
612 })();
|
bsw/jbe@1309
|
613
|
bsw/jbe@1309
|
614 wysihtml.commands.underline = (function() {
|
bsw/jbe@1309
|
615 var nodeOptions = {
|
bsw/jbe@1309
|
616 nodeName: "U",
|
bsw/jbe@1309
|
617 toggle: true
|
bsw/jbe@1309
|
618 };
|
bsw/jbe@1309
|
619
|
bsw/jbe@1309
|
620 return {
|
bsw/jbe@1309
|
621 exec: function(composer, command) {
|
bsw/jbe@1309
|
622 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
|
bsw/jbe@1309
|
623 },
|
bsw/jbe@1309
|
624
|
bsw/jbe@1309
|
625 state: function(composer, command) {
|
bsw/jbe@1309
|
626 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
|
bsw/jbe@1309
|
627 }
|
bsw/jbe@1309
|
628 };
|
bsw/jbe@1309
|
629
|
bsw/jbe@1309
|
630 })();
|