bhf 1.0.0.beta10 → 1.0.0.beta11

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.
@@ -1,7 +1,6 @@
1
1
  //= require turbolinks
2
2
  //= require activestorage
3
- //= require ./mootools-core-1.5.0-full-compat.js
4
- //= require ./mootools-more-1.5.0.js
3
+ //= require ./MooTools-More-1.6.0.js
5
4
  //= require ./mootools_ujs
6
5
  //= require ./trix
7
6
  //= require_tree ./locales/
@@ -94,17 +94,17 @@ this.MooEditable = new Class({
94
94
  }.bind(this));
95
95
  this.render();
96
96
  },
97
-
97
+
98
98
  toElement: function(){
99
99
  return this.textarea;
100
100
  },
101
-
101
+
102
102
  render: function(){
103
103
  var self = this;
104
-
104
+
105
105
  // Dimensions
106
106
  var dimensions = this.options.dimensions || this.textarea.getSize();
107
-
107
+
108
108
  // Build the container
109
109
  this.container = new Element('div', {
110
110
  id: (this.textarea.id) ? this.textarea.id + '-mooeditable-container' : null,
@@ -116,7 +116,7 @@ this.MooEditable = new Class({
116
116
 
117
117
  // Override all textarea styles
118
118
  this.textarea.addClass('mooeditable-textarea').setStyle('height', dimensions.y);
119
-
119
+
120
120
  // Build the iframe
121
121
  this.iframe = new IFrame({
122
122
  'class': 'mooeditable-iframe',
@@ -126,16 +126,16 @@ this.MooEditable = new Class({
126
126
  height: dimensions.y
127
127
  }
128
128
  });
129
-
129
+
130
130
  this.toolbar = new MooEditable.UI.Toolbar({
131
131
  onItemAction: function(){
132
- var args = Array.from(arguments);
132
+ var args = Array.convert(arguments);
133
133
  var item = args[0];
134
134
  self.action(item.name, args);
135
135
  }
136
136
  });
137
137
  this.attach.delay(1, this);
138
-
138
+
139
139
  // Update the event for textarea's corresponding labels
140
140
  if (this.options.handleLabel && this.textarea.id) $$('label[for="'+this.textarea.id+'"]').addEvent('click', function(e){
141
141
  if (self.mode != 'iframe') return;
@@ -151,7 +151,7 @@ this.MooEditable = new Class({
151
151
  if (self.mode == 'iframe') self.saveContent();
152
152
  });
153
153
  }
154
-
154
+
155
155
  this.fireEvent('render', this);
156
156
  },
157
157
 
@@ -160,7 +160,7 @@ this.MooEditable = new Class({
160
160
 
161
161
  // Assign view mode
162
162
  this.mode = 'iframe';
163
-
163
+
164
164
  // Editor iframe state
165
165
  this.editorDisabled = false;
166
166
 
@@ -168,9 +168,9 @@ this.MooEditable = new Class({
168
168
  this.container.wraps(this.textarea);
169
169
 
170
170
  this.textarea.setStyle('display', 'none');
171
-
171
+
172
172
  this.iframe.setStyle('display', '').inject(this.textarea, 'before');
173
-
173
+
174
174
  Object.each(this.dialogs, function(action, name){
175
175
  Object.each(action, function(dialog){
176
176
  document.id(dialog).inject(self.iframe, 'before');
@@ -196,7 +196,7 @@ this.MooEditable = new Class({
196
196
  // contentWindow and document references
197
197
  this.win = this.iframe.contentWindow;
198
198
  this.doc = this.win.document;
199
-
199
+
200
200
  // Deal with weird quirks on Gecko
201
201
  if (Browser.firefox) this.doc.designMode = 'On';
202
202
 
@@ -228,7 +228,7 @@ this.MooEditable = new Class({
228
228
  } else {
229
229
  document.id(this.doc.body);
230
230
  }
231
-
231
+
232
232
  this.setContent(this.textarea.get('value'));
233
233
 
234
234
  // Bind all events
@@ -256,7 +256,7 @@ this.MooEditable = new Class({
256
256
  self.doc.body.addListener(event, self['editor' + event.capitalize()].bind(self));
257
257
  });
258
258
  this.textarea.addEvent('keypress', this.textarea.retrieve('mooeditable:textareaKeyListener', this.keyListener.bind(this)));
259
-
259
+
260
260
  // Fix window focus event not firing on Firefox 2
261
261
  if (Browser.firefox2) this.doc.addEvent('focus', function(){
262
262
  self.win.fireEvent('focus').focus();
@@ -279,18 +279,18 @@ this.MooEditable = new Class({
279
279
  document.id(this.toolbar).inject(this.container, 'top');
280
280
  this.toolbar.render(this.actions);
281
281
  }
282
-
282
+
283
283
  if (this.options.disabled) this.disable();
284
284
 
285
285
  this.selection = new MooEditable.Selection(this.win);
286
-
286
+
287
287
  this.oldContent = this.getContent();
288
-
288
+
289
289
  this.fireEvent('attach', this);
290
-
290
+
291
291
  return this;
292
292
  },
293
-
293
+
294
294
  detach: function(){
295
295
  this.saveContent();
296
296
  this.textarea.setStyle('display', '').removeClass('mooeditable-textarea').inject(this.container, 'before');
@@ -299,141 +299,141 @@ this.MooEditable = new Class({
299
299
  this.fireEvent('detach', this);
300
300
  return this;
301
301
  },
302
-
302
+
303
303
  enable: function(){
304
304
  this.editorDisabled = false;
305
305
  this.toolbar.enable();
306
306
  return this;
307
307
  },
308
-
308
+
309
309
  disable: function(){
310
310
  this.editorDisabled = true;
311
311
  this.toolbar.disable();
312
312
  return this;
313
313
  },
314
-
314
+
315
315
  editorFocus: function(e){
316
316
  this.oldContent = '';
317
317
  this.fireEvent('editorFocus', [e, this]);
318
318
  },
319
-
319
+
320
320
  editorBlur: function(e){
321
321
  this.oldContent = this.saveContent().getContent();
322
322
  this.fireEvent('editorBlur', [e, this]);
323
323
  },
324
-
324
+
325
325
  editorMouseUp: function(e){
326
326
  if (this.editorDisabled){
327
327
  e.stop();
328
328
  return;
329
329
  }
330
-
330
+
331
331
  if (this.options.toolbar) this.checkStates();
332
-
332
+
333
333
  this.fireEvent('editorMouseUp', [e, this]);
334
334
  },
335
-
335
+
336
336
  editorMouseDown: function(e){
337
337
  if (this.editorDisabled){
338
338
  e.stop();
339
339
  return;
340
340
  }
341
-
341
+
342
342
  this.fireEvent('editorMouseDown', [e, this]);
343
343
  },
344
-
344
+
345
345
  editorMouseOver: function(e){
346
346
  if (this.editorDisabled){
347
347
  e.stop();
348
348
  return;
349
349
  }
350
-
350
+
351
351
  this.fireEvent('editorMouseOver', [e, this]);
352
352
  },
353
-
353
+
354
354
  editorMouseOut: function(e){
355
355
  if (this.editorDisabled){
356
356
  e.stop();
357
357
  return;
358
358
  }
359
-
359
+
360
360
  this.fireEvent('editorMouseOut', [e, this]);
361
361
  },
362
-
362
+
363
363
  editorMouseEnter: function(e){
364
364
  if (this.editorDisabled){
365
365
  e.stop();
366
366
  return;
367
367
  }
368
-
368
+
369
369
  if (this.oldContent && this.getContent() != this.oldContent){
370
370
  this.focus();
371
371
  this.fireEvent('editorPaste', [e, this]);
372
372
  }
373
-
373
+
374
374
  this.fireEvent('editorMouseEnter', [e, this]);
375
375
  },
376
-
376
+
377
377
  editorMouseLeave: function(e){
378
378
  if (this.editorDisabled){
379
379
  e.stop();
380
380
  return;
381
381
  }
382
-
382
+
383
383
  this.fireEvent('editorMouseLeave', [e, this]);
384
384
  },
385
-
385
+
386
386
  editorContextMenu: function(e){
387
387
  if (this.editorDisabled){
388
388
  e.stop();
389
389
  return;
390
390
  }
391
-
391
+
392
392
  this.fireEvent('editorContextMenu', [e, this]);
393
393
  },
394
-
394
+
395
395
  editorClick: function(e){
396
396
  // make images selectable and draggable in Safari
397
397
  if (Browser.safari || Browser.chrome){
398
398
  var el = e.target;
399
399
  if (Element.get(el, 'tag') == 'img'){
400
-
400
+
401
401
  // safari doesnt like dragging locally linked images
402
402
  if (this.options.baseURL){
403
403
  if (el.getProperty('src').indexOf('http://') == -1){
404
404
  el.setProperty('src', this.options.baseURL + el.getProperty('src'));
405
405
  }
406
406
  }
407
-
407
+
408
408
  this.selection.selectNode(el);
409
409
  this.checkStates();
410
410
  }
411
411
  }
412
-
412
+
413
413
  this.fireEvent('editorClick', [e, this]);
414
414
  },
415
-
415
+
416
416
  editorDoubleClick: function(e){
417
417
  this.fireEvent('editorDoubleClick', [e, this]);
418
418
  },
419
-
419
+
420
420
  editorKeyPress: function(e){
421
421
  if (this.editorDisabled){
422
422
  e.stop();
423
423
  return;
424
424
  }
425
-
425
+
426
426
  this.keyListener(e);
427
-
427
+
428
428
  this.fireEvent('editorKeyPress', [e, this]);
429
429
  },
430
-
430
+
431
431
  editorKeyUp: function(e){
432
432
  if (this.editorDisabled){
433
433
  e.stop();
434
434
  return;
435
435
  }
436
-
436
+
437
437
  var c = e.code;
438
438
  // 33-36 = pageup, pagedown, end, home; 45 = insert
439
439
  if (this.options.toolbar && (/^enter|left|up|right|down|delete|backspace$/i.test(e.key) || (c >= 33 && c <= 36) || c == 45 || e.meta || e.control)){
@@ -444,31 +444,31 @@ this.MooEditable = new Class({
444
444
  this.checkStates();
445
445
  }
446
446
  }
447
-
447
+
448
448
  this.fireEvent('editorKeyUp', [e, this]);
449
449
  },
450
-
450
+
451
451
  editorKeyDown: function(e){
452
452
  if (this.editorDisabled){
453
453
  e.stop();
454
454
  return;
455
455
  }
456
-
456
+
457
457
  if (e.key == 'enter'){
458
458
  if (this.options.paragraphise){
459
459
  if (e.shift && (Browser.safari || Browser.chrome)){
460
460
  var s = this.selection;
461
461
  var r = s.getRange();
462
-
462
+
463
463
  // Insert BR element
464
464
  var br = this.doc.createElement('br');
465
465
  r.insertNode(br);
466
-
466
+
467
467
  // Place caret after BR
468
468
  r.setStartAfter(br);
469
469
  r.setEndAfter(br);
470
470
  s.setRange(r);
471
-
471
+
472
472
  // Could not place caret after BR then insert an nbsp entity and move the caret
473
473
  if (s.getSelection().focusNode == br.previousSibling){
474
474
  var nbsp = this.doc.createTextNode('\u00a0');
@@ -478,10 +478,10 @@ this.MooEditable = new Class({
478
478
  s.selectNode(nbsp);
479
479
  s.collapse(1);
480
480
  }
481
-
481
+
482
482
  // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117
483
483
  this.win.scrollTo(0, Element.getOffsets(s.getRange().startContainer).y);
484
-
484
+
485
485
  e.preventDefault();
486
486
  } else if (Browser.firefox || Browser.safari || Browser.chrome){
487
487
  var node = this.selection.getNode();
@@ -502,7 +502,7 @@ this.MooEditable = new Class({
502
502
  }
503
503
  }
504
504
  }
505
-
505
+
506
506
  if (Browser.opera){
507
507
  var ctrlmeta = e.control || e.meta;
508
508
  if (ctrlmeta && e.key == 'x'){
@@ -513,37 +513,37 @@ this.MooEditable = new Class({
513
513
  this.fireEvent('editorPaste', [e, this]);
514
514
  }
515
515
  }
516
-
516
+
517
517
  this.fireEvent('editorKeyDown', [e, this]);
518
518
  },
519
-
519
+
520
520
  editorCut: function(e){
521
521
  if (this.editorDisabled){
522
522
  e.stop();
523
523
  return;
524
524
  }
525
-
525
+
526
526
  this.fireEvent('editorCut', [e, this]);
527
527
  },
528
-
528
+
529
529
  editorCopy: function(e){
530
530
  if (this.editorDisabled){
531
531
  e.stop();
532
532
  return;
533
533
  }
534
-
534
+
535
535
  this.fireEvent('editorCopy', [e, this]);
536
536
  },
537
-
537
+
538
538
  editorPaste: function(e){
539
539
  if (this.editorDisabled){
540
540
  e.stop();
541
541
  return;
542
542
  }
543
-
543
+
544
544
  this.fireEvent('editorPaste', [e, this]);
545
545
  },
546
-
546
+
547
547
  keyListener: function(e){
548
548
  var key = (Browser.Platform.mac) ? e.meta : e.control;
549
549
  if (!key || !this.keys[e.key]) return;
@@ -620,7 +620,7 @@ this.MooEditable = new Class({
620
620
  }
621
621
  return this;
622
622
  },
623
-
623
+
624
624
  ensureRootElement: function(val){
625
625
  if (this.options.rootElement){
626
626
  var el = new Element('div', {html: val.trim()});
@@ -648,7 +648,7 @@ this.MooEditable = new Class({
648
648
  if (start >= 0 && create){
649
649
  var newel = new Element(this.options.rootElement, {html: html});
650
650
  el.replaceChild(newel, el.childNodes[start]);
651
- for (var k=start+1; k<i; k++){
651
+ for (var k=start+1; k<i; k++){
652
652
  el.removeChild(el.childNodes[k]);
653
653
  length--;
654
654
  i--;
@@ -668,7 +668,7 @@ this.MooEditable = new Class({
668
668
  var element = this.selection.getNode();
669
669
  if (!element) return;
670
670
  if (typeOf(element) != 'element') return;
671
-
671
+
672
672
  this.actions.each(function(action){
673
673
  var item = this.toolbar.getItem(action);
674
674
  if (!item) return;
@@ -676,20 +676,20 @@ this.MooEditable = new Class({
676
676
 
677
677
  var states = MooEditable.Actions[action]['states'];
678
678
  if (!states) return;
679
-
679
+
680
680
  // custom checkState
681
681
  if (typeOf(states) == 'function'){
682
682
  states.attempt([document.id(element), item], this);
683
683
  return;
684
684
  }
685
-
685
+
686
686
  try{
687
687
  if (this.doc.queryCommandState(action)){
688
688
  item.activate();
689
689
  return;
690
690
  }
691
691
  } catch(e){}
692
-
692
+
693
693
  if (states.tags){
694
694
  var el = element;
695
695
  do {
@@ -722,13 +722,13 @@ this.MooEditable = new Class({
722
722
 
723
723
  cleanup: function(source){
724
724
  if (!this.options.cleanup) return source.trim();
725
-
725
+
726
726
  do {
727
727
  var oSource = source;
728
-
728
+
729
729
  // replace base URL references: ie localize links
730
730
  if (this.options.baseURL){
731
- source = source.replace('="' + this.options.baseURL, '="');
731
+ source = source.replace('="' + this.options.baseURL, '="');
732
732
  }
733
733
 
734
734
  // Webkit cleanup
@@ -820,11 +820,11 @@ this.MooEditable = new Class({
820
820
  if (this.options.xhtml){
821
821
  source = source.replace(/<img([^>]+)(\s*[^\/])>(<\/img>)*/gi, '<img$1$2 />');
822
822
  }
823
-
823
+
824
824
  //remove double <p> tags and empty <p> tags
825
825
  source = source.replace(/<p>(?:\s*)<p>/g, '<p>');
826
826
  source = source.replace(/<\/p>\s*<\/p>/g, '</p>');
827
-
827
+
828
828
  // Replace <br>s inside <pre> automatically added by some browsers
829
829
  source = source.replace(/<pre[^>]*>.*?<\/pre>/gi, function(match){
830
830
  return match.replace(/<br ?\/?>/gi, '\n');
@@ -961,7 +961,7 @@ MooEditable.Selection = new Class({
961
961
 
962
962
  return document.id(el);
963
963
  }
964
-
964
+
965
965
  return document.id(r.item ? r.item(0) : r.parentElement());
966
966
  },
967
967
 
@@ -996,18 +996,18 @@ MooEditable.Selection = new Class({
996
996
  // Wrapper functions to be used internally and for plugins, defaults to en-US
997
997
  var phrases = {};
998
998
  MooEditable.Locale = {
999
-
999
+
1000
1000
  define: function(key, value){
1001
1001
  if (typeOf(window.Locale) != 'null') return Locale.define('en-US', 'MooEditable', key, value);
1002
1002
  if (typeOf(key) == 'object') Object.merge(phrases, key);
1003
1003
  else phrases[key] = value;
1004
1004
  },
1005
-
1005
+
1006
1006
  get: function(key){
1007
1007
  if (typeOf(window.Locale) != 'null') return Locale.get('MooEditable.' + key);
1008
1008
  return key ? phrases[key] : '';
1009
1009
  }
1010
-
1010
+
1011
1011
  };
1012
1012
 
1013
1013
  MooEditable.Locale.define({
@@ -1044,18 +1044,18 @@ MooEditable.UI.Toolbar= new Class({
1044
1044
  */
1045
1045
  'class': ''
1046
1046
  },
1047
-
1047
+
1048
1048
  initialize: function(options){
1049
1049
  this.setOptions(options);
1050
1050
  this.el = new Element('div', {'class': 'mooeditable-ui-toolbar ' + this.options['class']});
1051
1051
  this.items = {};
1052
1052
  this.content = null;
1053
1053
  },
1054
-
1054
+
1055
1055
  toElement: function(){
1056
1056
  return this.el;
1057
1057
  },
1058
-
1058
+
1059
1059
  render: function(actions){
1060
1060
  if (this.content){
1061
1061
  this.el.adopt(this.content);
@@ -1066,7 +1066,7 @@ MooEditable.UI.Toolbar= new Class({
1066
1066
  }
1067
1067
  return this;
1068
1068
  },
1069
-
1069
+
1070
1070
  addItem: function(action){
1071
1071
  var self = this;
1072
1072
  var act = MooEditable.Actions[action];
@@ -1083,15 +1083,15 @@ MooEditable.UI.Toolbar= new Class({
1083
1083
  document.id(item).inject(this.el);
1084
1084
  return item;
1085
1085
  },
1086
-
1086
+
1087
1087
  getItem: function(action){
1088
1088
  return this.items[action];
1089
1089
  },
1090
-
1090
+
1091
1091
  addSeparator: function(){
1092
1092
  return new Element('span', {'class': 'toolbar-separator'}).inject(this.el);
1093
1093
  },
1094
-
1094
+
1095
1095
  itemAction: function(){
1096
1096
  this.fireEvent('itemAction', arguments);
1097
1097
  },
@@ -1109,17 +1109,17 @@ MooEditable.UI.Toolbar= new Class({
1109
1109
  });
1110
1110
  return this;
1111
1111
  },
1112
-
1112
+
1113
1113
  show: function(){
1114
1114
  this.el.setStyle('display', '');
1115
1115
  return this;
1116
1116
  },
1117
-
1117
+
1118
1118
  hide: function(){
1119
1119
  this.el.setStyle('display', 'none');
1120
1120
  return this;
1121
1121
  }
1122
-
1122
+
1123
1123
  });
1124
1124
 
1125
1125
  MooEditable.UI.Button = new Class({
@@ -1143,11 +1143,11 @@ MooEditable.UI.Button = new Class({
1143
1143
  this.name = this.options.name;
1144
1144
  this.render();
1145
1145
  },
1146
-
1146
+
1147
1147
  toElement: function(){
1148
1148
  return this.el;
1149
1149
  },
1150
-
1150
+
1151
1151
  render: function(){
1152
1152
  var self = this;
1153
1153
  var key = (Browser.Platform.mac) ? 'Cmd' : 'Ctrl';
@@ -1164,7 +1164,7 @@ MooEditable.UI.Button = new Class({
1164
1164
  }
1165
1165
  });
1166
1166
  if (this.options.mode != 'icon') this.el.addClass('mooeditable-ui-button-' + this.options.mode);
1167
-
1167
+
1168
1168
  this.active = false;
1169
1169
  this.disabled = false;
1170
1170
 
@@ -1173,20 +1173,20 @@ MooEditable.UI.Button = new Class({
1173
1173
  mouseenter: function(e){ this.addClass('hover'); },
1174
1174
  mouseleave: function(e){ this.removeClass('hover'); }
1175
1175
  });
1176
-
1176
+
1177
1177
  return this;
1178
1178
  },
1179
-
1179
+
1180
1180
  click: function(e){
1181
1181
  e.preventDefault();
1182
1182
  if (this.disabled) return;
1183
1183
  this.action(e);
1184
1184
  },
1185
-
1185
+
1186
1186
  action: function(){
1187
- this.fireEvent('action', [this].concat(Array.from(arguments)));
1187
+ this.fireEvent('action', [this].concat(Array.convert(arguments)));
1188
1188
  },
1189
-
1189
+
1190
1190
  enable: function(){
1191
1191
  if (this.active) this.el.removeClass('onActive');
1192
1192
  if (!this.disabled) return;
@@ -1197,7 +1197,7 @@ MooEditable.UI.Button = new Class({
1197
1197
  });
1198
1198
  return this;
1199
1199
  },
1200
-
1200
+
1201
1201
  disable: function(){
1202
1202
  if (this.disabled) return;
1203
1203
  this.disabled = true;
@@ -1207,20 +1207,20 @@ MooEditable.UI.Button = new Class({
1207
1207
  });
1208
1208
  return this;
1209
1209
  },
1210
-
1210
+
1211
1211
  activate: function(){
1212
1212
  if (this.disabled) return;
1213
1213
  this.active = true;
1214
1214
  this.el.addClass('onActive');
1215
1215
  return this;
1216
1216
  },
1217
-
1217
+
1218
1218
  deactivate: function(){
1219
1219
  this.active = false;
1220
1220
  this.el.removeClass('onActive');
1221
1221
  return this;
1222
1222
  }
1223
-
1223
+
1224
1224
  });
1225
1225
 
1226
1226
  MooEditable.UI.Dialog = new Class({
@@ -1239,7 +1239,7 @@ MooEditable.UI.Dialog = new Class({
1239
1239
  initialize: function(html, options){
1240
1240
  this.setOptions(options);
1241
1241
  this.html = html;
1242
-
1242
+
1243
1243
  var self = this;
1244
1244
  this.el = new Element('div', {
1245
1245
  'class': 'mooeditable-ui-dialog ' + self.options['class'],
@@ -1252,22 +1252,22 @@ MooEditable.UI.Dialog = new Class({
1252
1252
  }
1253
1253
  });
1254
1254
  },
1255
-
1255
+
1256
1256
  toElement: function(){
1257
1257
  return this.el;
1258
1258
  },
1259
-
1259
+
1260
1260
  click: function(){
1261
1261
  this.fireEvent('click', arguments);
1262
1262
  return this;
1263
1263
  },
1264
-
1264
+
1265
1265
  open: function(){
1266
1266
  this.el.setStyle('display', '');
1267
1267
  this.fireEvent('open', this);
1268
1268
  return this;
1269
1269
  },
1270
-
1270
+
1271
1271
  close: function(){
1272
1272
  this.el.setStyle('display', 'none');
1273
1273
  this.fireEvent('close', this);
@@ -1359,7 +1359,7 @@ MooEditable.Actions = {
1359
1359
  }
1360
1360
  }
1361
1361
  },
1362
-
1362
+
1363
1363
  italic: {
1364
1364
  title: MooEditable.Locale.get('italic'),
1365
1365
  options: {
@@ -1395,7 +1395,7 @@ MooEditable.Actions = {
1395
1395
  }
1396
1396
  }
1397
1397
  },
1398
-
1398
+
1399
1399
  underline: {
1400
1400
  title: MooEditable.Locale.get('underline'),
1401
1401
  options: {
@@ -1406,7 +1406,7 @@ MooEditable.Actions = {
1406
1406
  css: {'text-decoration': 'underline'}
1407
1407
  }
1408
1408
  },
1409
-
1409
+
1410
1410
  strikethrough: {
1411
1411
  title: MooEditable.Locale.get('strikethrough'),
1412
1412
  options: {
@@ -1417,46 +1417,46 @@ MooEditable.Actions = {
1417
1417
  css: {'text-decoration': 'line-through'}
1418
1418
  }
1419
1419
  },
1420
-
1420
+
1421
1421
  insertunorderedlist: {
1422
1422
  title: MooEditable.Locale.get('unorderedList'),
1423
1423
  states: {
1424
1424
  tags: ['ul']
1425
1425
  }
1426
1426
  },
1427
-
1427
+
1428
1428
  insertorderedlist: {
1429
1429
  title: MooEditable.Locale.get('orderedList'),
1430
1430
  states: {
1431
1431
  tags: ['ol']
1432
1432
  }
1433
1433
  },
1434
-
1434
+
1435
1435
  indent: {
1436
1436
  title: MooEditable.Locale.get('indent'),
1437
1437
  states: {
1438
1438
  tags: ['blockquote']
1439
1439
  }
1440
1440
  },
1441
-
1441
+
1442
1442
  outdent: {
1443
1443
  title: MooEditable.Locale.get('outdent')
1444
1444
  },
1445
-
1445
+
1446
1446
  undo: {
1447
1447
  title: MooEditable.Locale.get('undo'),
1448
1448
  options: {
1449
1449
  shortcut: 'z'
1450
1450
  }
1451
1451
  },
1452
-
1452
+
1453
1453
  redo: {
1454
1454
  title: MooEditable.Locale.get('redo'),
1455
1455
  options: {
1456
1456
  shortcut: 'y'
1457
1457
  }
1458
1458
  },
1459
-
1459
+
1460
1460
  unlink: {
1461
1461
  title: MooEditable.Locale.get('removeHyperlink')
1462
1462
  },