tianheng-ui 0.0.56 → 0.0.57

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.
Files changed (238) hide show
  1. package/lib/039af9192b9bb277966ceb4e4ce29c41.js +16 -0
  2. package/lib/{c755e7fc08446566ee8dd3a8aa8fe43f.js → 2d84c80112a372bc149cad3464e90fa3.js} +404 -502
  3. package/lib/5977b934a4c6b480790864ea01303173.js +10834 -0
  4. package/lib/7745f3e776488705a38e62f85adad54d.js +16 -0
  5. package/lib/de8dee841ffdaaede3a2254deef30376.js +15395 -0
  6. package/lib/e78eab250e7f8ccac3d918dfdb06ca10.js +8904 -0
  7. package/lib/index.js +4 -2
  8. package/lib/theme-chalk/fonts/PingFang.ttf +0 -0
  9. package/lib/theme-chalk/fonts/bpmn.eot +0 -0
  10. package/lib/theme-chalk/fonts/bpmn.svg +224 -0
  11. package/lib/theme-chalk/fonts/bpmn.ttf +0 -0
  12. package/lib/theme-chalk/fonts/bpmn.woff +0 -0
  13. package/lib/theme-chalk/fonts/bpmn.woff2 +0 -0
  14. package/lib/theme-chalk/fonts/fontawesome-webfont.eot +0 -0
  15. package/lib/theme-chalk/fonts/fontawesome-webfont.svg +2671 -0
  16. package/lib/theme-chalk/fonts/fontawesome-webfont.ttf +0 -0
  17. package/lib/theme-chalk/fonts/fontawesome-webfont.woff +0 -0
  18. package/lib/theme-chalk/fonts/fontawesome-webfont.woff2 +0 -0
  19. package/lib/{iconfont.eot → theme-chalk/fonts/iconfont.eot} +0 -0
  20. package/lib/{iconfont.svg → theme-chalk/fonts/iconfont.svg} +0 -0
  21. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  22. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  23. package/lib/theme-chalk/images/notData.png +0 -0
  24. package/lib/theme-chalk/index.scss +29 -0
  25. package/lib/theme-chalk/styles/button.scss +501 -0
  26. package/lib/theme-chalk/styles/card.scss +29 -0
  27. package/lib/theme-chalk/styles/cell.scss +54 -0
  28. package/lib/theme-chalk/styles/codeEditor.scss +9 -0
  29. package/lib/theme-chalk/styles/col.scss +151 -0
  30. package/lib/theme-chalk/styles/dialog.scss +59 -0
  31. package/lib/theme-chalk/styles/empty.scss +22 -0
  32. package/lib/theme-chalk/styles/feature.scss +42 -0
  33. package/lib/theme-chalk/styles/font.css +7 -0
  34. package/lib/theme-chalk/{icon.css → styles/icon.css} +3 -3
  35. package/lib/theme-chalk/styles/imagePreview.scss +113 -0
  36. package/lib/theme-chalk/styles/img.scss +35 -0
  37. package/lib/theme-chalk/styles/reset.scss +8 -0
  38. package/lib/theme-chalk/{root.css → styles/root.css} +2 -35
  39. package/lib/theme-chalk/styles/row.scss +23 -0
  40. package/lib/theme-chalk/styles/variable.scss +80 -0
  41. package/lib/tianheng-ui.js +71 -9
  42. package/package.json +24 -4
  43. package/packages/Button/index.js +8 -0
  44. package/packages/Button/index.vue +80 -0
  45. package/packages/Card/index.js +8 -0
  46. package/packages/Card/index.vue +37 -0
  47. package/packages/{cell → Cell}/index.js +0 -0
  48. package/packages/Cell/index.vue +68 -0
  49. package/packages/{codeEditor → CodeEditor}/index.js +0 -0
  50. package/packages/{codeEditor → CodeEditor}/index.vue +73 -108
  51. package/packages/Col/index.js +8 -0
  52. package/packages/Col/index.vue +41 -0
  53. package/packages/{dialog → Dialog}/index.js +0 -0
  54. package/packages/{dialog → Dialog}/index.vue +19 -10
  55. package/packages/Empty/images/notData.png +0 -0
  56. package/packages/{empty → Empty}/index.js +0 -0
  57. package/packages/Empty/index.vue +35 -0
  58. package/packages/FormMaking/Container.vue +1907 -0
  59. package/packages/{formMaking → FormMaking}/FormConfig.vue +22 -6
  60. package/packages/FormMaking/GenerateForm.vue +246 -0
  61. package/packages/{formMaking → FormMaking}/GenerateFormItem.vue +340 -172
  62. package/packages/FormMaking/GenerateFormItemH5.vue +828 -0
  63. package/packages/{formMaking → FormMaking}/Upload/index.vue +0 -0
  64. package/packages/FormMaking/WidgetConfig.vue +473 -0
  65. package/packages/{formMaking → FormMaking}/WidgetForm.vue +49 -31
  66. package/packages/FormMaking/WidgetFormItem.vue +157 -0
  67. package/packages/{formMaking/componentsConfig.js → FormMaking/custom/config.js} +379 -163
  68. package/packages/FormMaking/custom/configs/alliance.vue +0 -0
  69. package/packages/FormMaking/custom/configs/blank.vue +54 -0
  70. package/packages/FormMaking/custom/configs/button.vue +144 -0
  71. package/packages/FormMaking/custom/configs/cascader.vue +182 -0
  72. package/packages/FormMaking/custom/configs/cell.vue +81 -0
  73. package/packages/FormMaking/custom/configs/checkbox.vue +237 -0
  74. package/packages/FormMaking/custom/configs/color.vue +137 -0
  75. package/packages/FormMaking/custom/configs/date.vue +158 -0
  76. package/packages/FormMaking/custom/configs/divider.vue +61 -0
  77. package/packages/FormMaking/custom/configs/editor.vue +71 -0
  78. package/packages/FormMaking/custom/configs/filler.vue +52 -0
  79. package/packages/FormMaking/custom/configs/grid.vue +103 -0
  80. package/packages/FormMaking/custom/configs/image.vue +148 -0
  81. package/packages/FormMaking/custom/configs/input.vue +176 -0
  82. package/packages/FormMaking/custom/configs/number.vue +140 -0
  83. package/packages/FormMaking/custom/configs/radio.vue +215 -0
  84. package/packages/FormMaking/custom/configs/rate.vue +109 -0
  85. package/packages/FormMaking/custom/configs/select.vue +308 -0
  86. package/packages/FormMaking/custom/configs/slider.vue +142 -0
  87. package/packages/FormMaking/custom/configs/switch.vue +130 -0
  88. package/packages/FormMaking/custom/configs/table.vue +105 -0
  89. package/packages/FormMaking/custom/configs/table_h5.vue +102 -0
  90. package/packages/FormMaking/custom/configs/tabs.vue +175 -0
  91. package/packages/FormMaking/custom/configs/text.vue +71 -0
  92. package/packages/FormMaking/custom/configs/textarea.vue +167 -0
  93. package/packages/FormMaking/custom/configs/time.vue +153 -0
  94. package/packages/FormMaking/custom/configs/upload.vue +150 -0
  95. package/packages/FormMaking/custom/index.js +33 -0
  96. package/packages/FormMaking/custom/items/alliance.vue +132 -0
  97. package/packages/FormMaking/custom/items/blank.vue +16 -0
  98. package/packages/FormMaking/custom/items/button.vue +27 -0
  99. package/packages/FormMaking/custom/items/cascader.vue +29 -0
  100. package/packages/FormMaking/custom/items/cell.vue +18 -0
  101. package/packages/FormMaking/custom/items/checkbox.vue +46 -0
  102. package/packages/FormMaking/custom/items/color.vue +19 -0
  103. package/packages/FormMaking/custom/items/date.vue +29 -0
  104. package/packages/FormMaking/custom/items/divider.vue +14 -0
  105. package/packages/FormMaking/custom/items/editor.vue +22 -0
  106. package/packages/FormMaking/custom/items/filler.vue +17 -0
  107. package/packages/FormMaking/custom/items/grid.vue +129 -0
  108. package/packages/FormMaking/custom/items/image.vue +42 -0
  109. package/packages/FormMaking/custom/items/input.vue +36 -0
  110. package/packages/FormMaking/custom/items/login.vue +13 -0
  111. package/packages/FormMaking/custom/items/number.vue +24 -0
  112. package/packages/FormMaking/custom/items/radio.vue +44 -0
  113. package/packages/FormMaking/custom/items/rate.vue +20 -0
  114. package/packages/FormMaking/custom/items/select.vue +32 -0
  115. package/packages/FormMaking/custom/items/slider.vue +34 -0
  116. package/packages/FormMaking/custom/items/switch.vue +22 -0
  117. package/packages/FormMaking/custom/items/table.vue +106 -0
  118. package/packages/FormMaking/custom/items/table_h5.vue +126 -0
  119. package/packages/FormMaking/custom/items/tabs.vue +145 -0
  120. package/packages/FormMaking/custom/items/text.vue +18 -0
  121. package/packages/FormMaking/custom/items/textarea.vue +37 -0
  122. package/packages/FormMaking/custom/items/time.vue +32 -0
  123. package/packages/FormMaking/custom/items/upload.vue +83 -0
  124. package/packages/FormMaking/custom/mixins/index.js +61 -0
  125. package/packages/FormMaking/custom/register.js +18 -0
  126. package/packages/{formMaking → FormMaking}/iconfont/demo.css +0 -0
  127. package/packages/{formMaking → FormMaking}/iconfont/demo_index.html +0 -0
  128. package/packages/{formMaking → FormMaking}/iconfont/iconfont.css +0 -0
  129. package/packages/{formMaking → FormMaking}/iconfont/iconfont.eot +0 -0
  130. package/packages/{formMaking → FormMaking}/iconfont/iconfont.js +0 -0
  131. package/packages/{formMaking → FormMaking}/iconfont/iconfont.svg +0 -0
  132. package/{lib → packages/FormMaking/iconfont}/iconfont.ttf +0 -0
  133. package/{lib → packages/FormMaking/iconfont}/iconfont.woff +0 -0
  134. package/packages/{formMaking → FormMaking}/iconfont/iconfont.woff2 +0 -0
  135. package/packages/FormMaking/index.js +35 -0
  136. package/packages/{formMaking → FormMaking}/lang/en-US.js +1 -1
  137. package/packages/{formMaking → FormMaking}/lang/zh-CN.js +1 -1
  138. package/packages/{formMaking → FormMaking}/styles/cover.scss +1 -1
  139. package/packages/{formMaking → FormMaking}/styles/index.scss +445 -429
  140. package/packages/{formMaking → FormMaking/util}/generateCode.js +5 -5
  141. package/packages/{formMaking → FormMaking}/util/index.js +0 -0
  142. package/packages/{formMaking → FormMaking}/util/request.js +0 -0
  143. package/packages/{icons → Icons}/index.js +0 -0
  144. package/packages/{icons → Icons}/index.vue +26 -9
  145. package/packages/Image/index.js +8 -0
  146. package/packages/Image/index.vue +146 -0
  147. package/packages/ImagePreview/index.js +8 -0
  148. package/packages/ImagePreview/index.vue +386 -0
  149. package/packages/Row/index.js +8 -0
  150. package/packages/Row/index.vue +35 -0
  151. package/packages/{table → Table}/action.js +0 -0
  152. package/packages/{table → Table}/action.vue +1 -1
  153. package/packages/Table/column.vue +63 -0
  154. package/packages/{table → Table}/index.js +0 -0
  155. package/packages/{table → Table}/index.vue +25 -23
  156. package/packages/{table → Table}/search.js +0 -0
  157. package/packages/{table → Table}/search.vue +2 -2
  158. package/packages/{table → Table}/tools.js +0 -0
  159. package/packages/{table → Table}/tools.vue +0 -0
  160. package/packages/Workflow/Log.js +99 -0
  161. package/packages/Workflow/designer/ProcessDesigner.vue +628 -0
  162. package/packages/Workflow/designer/index.js +7 -0
  163. package/packages/Workflow/designer/plugins/content-pad/contentPadProvider.js +390 -0
  164. package/packages/Workflow/designer/plugins/content-pad/index.js +6 -0
  165. package/packages/Workflow/designer/plugins/defaultEmpty.js +24 -0
  166. package/packages/Workflow/designer/plugins/descriptor/activitiDescriptor.json +1071 -0
  167. package/packages/Workflow/designer/plugins/descriptor/camundaDescriptor.json +1087 -0
  168. package/packages/Workflow/designer/plugins/descriptor/flowableDescriptor.json +1215 -0
  169. package/packages/Workflow/designer/plugins/extension-moddle/activiti/activitiExtension.js +74 -0
  170. package/packages/Workflow/designer/plugins/extension-moddle/activiti/index.js +9 -0
  171. package/packages/Workflow/designer/plugins/extension-moddle/camunda/extension.js +148 -0
  172. package/packages/Workflow/designer/plugins/extension-moddle/camunda/index.js +6 -0
  173. package/packages/Workflow/designer/plugins/extension-moddle/flowable/flowableExtension.js +74 -0
  174. package/packages/Workflow/designer/plugins/extension-moddle/flowable/index.js +9 -0
  175. package/packages/Workflow/designer/plugins/palette/CustomPalette.js +156 -0
  176. package/packages/Workflow/designer/plugins/palette/index.js +6 -0
  177. package/packages/Workflow/designer/plugins/palette/paletteProvider.js +160 -0
  178. package/packages/Workflow/designer/plugins/translate/customTranslate.js +41 -0
  179. package/packages/Workflow/designer/plugins/translate/zh.js +238 -0
  180. package/packages/Workflow/highlight/index.js +5 -0
  181. package/packages/Workflow/index.js +26 -0
  182. package/packages/Workflow/index.vue +394 -0
  183. package/packages/Workflow/modules/auto-place/CustomAutoPlace.js +81 -0
  184. package/packages/Workflow/modules/auto-place/index.js +6 -0
  185. package/packages/Workflow/modules/custom-renderer/CustomRenderer.js +17 -0
  186. package/packages/Workflow/modules/custom-renderer/index.js +6 -0
  187. package/packages/Workflow/modules/rules/CustomRules.js +16 -0
  188. package/packages/Workflow/modules/rules/index.js +6 -0
  189. package/packages/Workflow/palette/ProcessPalette.vue +106 -0
  190. package/packages/Workflow/palette/index.js +7 -0
  191. package/packages/Workflow/penal/PropertiesPanel.vue +247 -0
  192. package/packages/Workflow/penal/base/ElementBaseInfo.vue +80 -0
  193. package/packages/Workflow/penal/flow-condition/FlowCondition.vue +142 -0
  194. package/packages/Workflow/penal/form/ElementForm.vue +367 -0
  195. package/packages/Workflow/penal/index.js +7 -0
  196. package/packages/Workflow/penal/listeners/ElementListeners.vue +299 -0
  197. package/packages/Workflow/penal/listeners/UserTaskListeners.vue +322 -0
  198. package/packages/Workflow/penal/listeners/template.js +178 -0
  199. package/packages/Workflow/penal/listeners/utilSelf.js +62 -0
  200. package/packages/Workflow/penal/multi-instance/ElementMultiInstance.vue +200 -0
  201. package/packages/Workflow/penal/other/ElementOtherConfig.vue +59 -0
  202. package/packages/Workflow/penal/properties/ElementProperties.vue +135 -0
  203. package/packages/Workflow/penal/signal-message/SignalAndMessage.vue +104 -0
  204. package/packages/Workflow/penal/task/ElementTask.vue +73 -0
  205. package/packages/Workflow/penal/task/task-components/ReceiveTask.vue +97 -0
  206. package/packages/Workflow/penal/task/task-components/ScriptTask.vue +85 -0
  207. package/packages/Workflow/penal/task/task-components/UserTask.vue +535 -0
  208. package/packages/Workflow/theme/element-variables.scss +70 -0
  209. package/packages/Workflow/theme/index.scss +2 -0
  210. package/packages/Workflow/theme/process-designer.scss +157 -0
  211. package/packages/Workflow/theme/process-panel.scss +107 -0
  212. package/packages/Workflow/translations.js +25 -0
  213. package/packages/Workflow/utils.js +71 -0
  214. package/packages/upload/ajax.js +85 -0
  215. package/packages/upload/index.js +8 -0
  216. package/packages/upload/index.vue +325 -0
  217. package/packages/upload/locale.js +9 -0
  218. package/packages/upload/upload-dragger.vue +70 -0
  219. package/packages/upload/upload-list.vue +101 -0
  220. package/packages/upload/upload.vue +211 -0
  221. package/lib/03250ed25fc1b305e9980cf7cf0dfb09.js +0 -1
  222. package/lib/theme-chalk/cell.css +0 -53
  223. package/lib/theme-chalk/dialog.css +0 -41
  224. package/lib/theme-chalk/empty.css +0 -27
  225. package/lib/theme-chalk/index.css +0 -6
  226. package/lib/theme-chalk/reset.css +0 -4
  227. package/lib/tianheng-ui.js.map +0 -1
  228. package/packages/cell/index.vue +0 -116
  229. package/packages/empty/index.vue +0 -33
  230. package/packages/formMaking/Container.vue +0 -591
  231. package/packages/formMaking/CusDialog.vue +0 -134
  232. package/packages/formMaking/GenerateForm.vue +0 -174
  233. package/packages/formMaking/WidgetConfig.vue +0 -1539
  234. package/packages/formMaking/WidgetFormItem.vue +0 -817
  235. package/packages/formMaking/iconfont/iconfont.ttf +0 -0
  236. package/packages/formMaking/iconfont/iconfont.woff +0 -0
  237. package/packages/formMaking/index.js +0 -77
  238. package/packages/table/column.vue +0 -111
@@ -21,11 +21,11 @@ window.ace = window;
21
21
  window.onerror = function(message, file, line, col, err) {
22
22
  postMessage({type: "error", data: {
23
23
  message: message,
24
- data: err.data,
24
+ data: err && err.data,
25
25
  file: file,
26
26
  line: line,
27
27
  col: col,
28
- stack: err.stack
28
+ stack: err && err.stack
29
29
  }});
30
30
  };
31
31
 
@@ -153,10 +153,10 @@ window.define = function(id, deps, factory) {
153
153
  };
154
154
  };
155
155
  window.define.amd = {};
156
- require.tlns = {};
156
+ window.require.tlns = {};
157
157
  window.initBaseUrls = function initBaseUrls(topLevelNamespaces) {
158
158
  for (var i in topLevelNamespaces)
159
- require.tlns[i] = topLevelNamespaces[i];
159
+ this.require.tlns[i] = topLevelNamespaces[i];
160
160
  };
161
161
 
162
162
  window.initSender = function initSender() {
@@ -210,16 +210,14 @@ window.onmessage = function(e) {
210
210
  else if (msg.init) {
211
211
  window.initBaseUrls(msg.tlns);
212
212
  sender = window.sender = window.initSender();
213
- var clazz = require(msg.module)[msg.classname];
213
+ var clazz = this.require(msg.module)[msg.classname];
214
214
  main = window.main = new clazz(sender);
215
215
  }
216
216
  };
217
217
  })(this);
218
218
 
219
- ace.define("ace/lib/oop",[], function(require, exports, module) {
220
- "use strict";
221
-
222
- exports.inherits = function(ctor, superCtor) {
219
+ ace.define("ace/lib/oop",[], function(require, exports, module){"use strict";
220
+ exports.inherits = function (ctor, superCtor) {
223
221
  ctor.super_ = superCtor;
224
222
  ctor.prototype = Object.create(superCtor.prototype, {
225
223
  constructor: {
@@ -230,501 +228,455 @@ exports.inherits = function(ctor, superCtor) {
230
228
  }
231
229
  });
232
230
  };
233
-
234
- exports.mixin = function(obj, mixin) {
231
+ exports.mixin = function (obj, mixin) {
235
232
  for (var key in mixin) {
236
233
  obj[key] = mixin[key];
237
234
  }
238
235
  return obj;
239
236
  };
240
-
241
- exports.implement = function(proto, mixin) {
237
+ exports.implement = function (proto, mixin) {
242
238
  exports.mixin(proto, mixin);
243
239
  };
244
240
 
245
241
  });
246
242
 
247
- ace.define("ace/range",[], function(require, exports, module) {
248
- "use strict";
249
- var comparePoints = function(p1, p2) {
243
+ ace.define("ace/apply_delta",[], function(require, exports, module){"use strict";
244
+ function throwDeltaError(delta, errorText) {
245
+ console.log("Invalid Delta:", delta);
246
+ throw "Invalid Delta: " + errorText;
247
+ }
248
+ function positionInDocument(docLines, position) {
249
+ return position.row >= 0 && position.row < docLines.length &&
250
+ position.column >= 0 && position.column <= docLines[position.row].length;
251
+ }
252
+ function validateDelta(docLines, delta) {
253
+ if (delta.action != "insert" && delta.action != "remove")
254
+ throwDeltaError(delta, "delta.action must be 'insert' or 'remove'");
255
+ if (!(delta.lines instanceof Array))
256
+ throwDeltaError(delta, "delta.lines must be an Array");
257
+ if (!delta.start || !delta.end)
258
+ throwDeltaError(delta, "delta.start/end must be an present");
259
+ var start = delta.start;
260
+ if (!positionInDocument(docLines, delta.start))
261
+ throwDeltaError(delta, "delta.start must be contained in document");
262
+ var end = delta.end;
263
+ if (delta.action == "remove" && !positionInDocument(docLines, end))
264
+ throwDeltaError(delta, "delta.end must contained in document for 'remove' actions");
265
+ var numRangeRows = end.row - start.row;
266
+ var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));
267
+ if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)
268
+ throwDeltaError(delta, "delta.range must match delta lines");
269
+ }
270
+ exports.applyDelta = function (docLines, delta, doNotValidate) {
271
+ var row = delta.start.row;
272
+ var startColumn = delta.start.column;
273
+ var line = docLines[row] || "";
274
+ switch (delta.action) {
275
+ case "insert":
276
+ var lines = delta.lines;
277
+ if (lines.length === 1) {
278
+ docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);
279
+ }
280
+ else {
281
+ var args = [row, 1].concat(delta.lines);
282
+ docLines.splice.apply(docLines, args);
283
+ docLines[row] = line.substring(0, startColumn) + docLines[row];
284
+ docLines[row + delta.lines.length - 1] += line.substring(startColumn);
285
+ }
286
+ break;
287
+ case "remove":
288
+ var endColumn = delta.end.column;
289
+ var endRow = delta.end.row;
290
+ if (row === endRow) {
291
+ docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);
292
+ }
293
+ else {
294
+ docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));
295
+ }
296
+ break;
297
+ }
298
+ };
299
+
300
+ });
301
+
302
+ ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict";
303
+ var EventEmitter = {};
304
+ var stopPropagation = function () { this.propagationStopped = true; };
305
+ var preventDefault = function () { this.defaultPrevented = true; };
306
+ EventEmitter._emit =
307
+ EventEmitter._dispatchEvent = function (eventName, e) {
308
+ this._eventRegistry || (this._eventRegistry = {});
309
+ this._defaultHandlers || (this._defaultHandlers = {});
310
+ var listeners = this._eventRegistry[eventName] || [];
311
+ var defaultHandler = this._defaultHandlers[eventName];
312
+ if (!listeners.length && !defaultHandler)
313
+ return;
314
+ if (typeof e != "object" || !e)
315
+ e = {};
316
+ if (!e.type)
317
+ e.type = eventName;
318
+ if (!e.stopPropagation)
319
+ e.stopPropagation = stopPropagation;
320
+ if (!e.preventDefault)
321
+ e.preventDefault = preventDefault;
322
+ listeners = listeners.slice();
323
+ for (var i = 0; i < listeners.length; i++) {
324
+ listeners[i](e, this);
325
+ if (e.propagationStopped)
326
+ break;
327
+ }
328
+ if (defaultHandler && !e.defaultPrevented)
329
+ return defaultHandler(e, this);
330
+ };
331
+ EventEmitter._signal = function (eventName, e) {
332
+ var listeners = (this._eventRegistry || {})[eventName];
333
+ if (!listeners)
334
+ return;
335
+ listeners = listeners.slice();
336
+ for (var i = 0; i < listeners.length; i++)
337
+ listeners[i](e, this);
338
+ };
339
+ EventEmitter.once = function (eventName, callback) {
340
+ var _self = this;
341
+ this.on(eventName, function newCallback() {
342
+ _self.off(eventName, newCallback);
343
+ callback.apply(null, arguments);
344
+ });
345
+ if (!callback) {
346
+ return new Promise(function (resolve) {
347
+ callback = resolve;
348
+ });
349
+ }
350
+ };
351
+ EventEmitter.setDefaultHandler = function (eventName, callback) {
352
+ var handlers = this._defaultHandlers;
353
+ if (!handlers)
354
+ handlers = this._defaultHandlers = { _disabled_: {} };
355
+ if (handlers[eventName]) {
356
+ var old = handlers[eventName];
357
+ var disabled = handlers._disabled_[eventName];
358
+ if (!disabled)
359
+ handlers._disabled_[eventName] = disabled = [];
360
+ disabled.push(old);
361
+ var i = disabled.indexOf(callback);
362
+ if (i != -1)
363
+ disabled.splice(i, 1);
364
+ }
365
+ handlers[eventName] = callback;
366
+ };
367
+ EventEmitter.removeDefaultHandler = function (eventName, callback) {
368
+ var handlers = this._defaultHandlers;
369
+ if (!handlers)
370
+ return;
371
+ var disabled = handlers._disabled_[eventName];
372
+ if (handlers[eventName] == callback) {
373
+ if (disabled)
374
+ this.setDefaultHandler(eventName, disabled.pop());
375
+ }
376
+ else if (disabled) {
377
+ var i = disabled.indexOf(callback);
378
+ if (i != -1)
379
+ disabled.splice(i, 1);
380
+ }
381
+ };
382
+ EventEmitter.on =
383
+ EventEmitter.addEventListener = function (eventName, callback, capturing) {
384
+ this._eventRegistry = this._eventRegistry || {};
385
+ var listeners = this._eventRegistry[eventName];
386
+ if (!listeners)
387
+ listeners = this._eventRegistry[eventName] = [];
388
+ if (listeners.indexOf(callback) == -1)
389
+ listeners[capturing ? "unshift" : "push"](callback);
390
+ return callback;
391
+ };
392
+ EventEmitter.off =
393
+ EventEmitter.removeListener =
394
+ EventEmitter.removeEventListener = function (eventName, callback) {
395
+ this._eventRegistry = this._eventRegistry || {};
396
+ var listeners = this._eventRegistry[eventName];
397
+ if (!listeners)
398
+ return;
399
+ var index = listeners.indexOf(callback);
400
+ if (index !== -1)
401
+ listeners.splice(index, 1);
402
+ };
403
+ EventEmitter.removeAllListeners = function (eventName) {
404
+ if (!eventName)
405
+ this._eventRegistry = this._defaultHandlers = undefined;
406
+ if (this._eventRegistry)
407
+ this._eventRegistry[eventName] = undefined;
408
+ if (this._defaultHandlers)
409
+ this._defaultHandlers[eventName] = undefined;
410
+ };
411
+ exports.EventEmitter = EventEmitter;
412
+
413
+ });
414
+
415
+ ace.define("ace/range",[], function(require, exports, module){"use strict";
416
+ var comparePoints = function (p1, p2) {
250
417
  return p1.row - p2.row || p1.column - p2.column;
251
418
  };
252
- var Range = function(startRow, startColumn, endRow, endColumn) {
419
+ var Range = function (startRow, startColumn, endRow, endColumn) {
253
420
  this.start = {
254
421
  row: startRow,
255
422
  column: startColumn
256
423
  };
257
-
258
424
  this.end = {
259
425
  row: endRow,
260
426
  column: endColumn
261
427
  };
262
428
  };
263
-
264
- (function() {
265
- this.isEqual = function(range) {
429
+ (function () {
430
+ this.isEqual = function (range) {
266
431
  return this.start.row === range.start.row &&
267
432
  this.end.row === range.end.row &&
268
433
  this.start.column === range.start.column &&
269
434
  this.end.column === range.end.column;
270
435
  };
271
- this.toString = function() {
436
+ this.toString = function () {
272
437
  return ("Range: [" + this.start.row + "/" + this.start.column +
273
438
  "] -> [" + this.end.row + "/" + this.end.column + "]");
274
439
  };
275
-
276
- this.contains = function(row, column) {
440
+ this.contains = function (row, column) {
277
441
  return this.compare(row, column) == 0;
278
442
  };
279
- this.compareRange = function(range) {
280
- var cmp,
281
- end = range.end,
282
- start = range.start;
283
-
443
+ this.compareRange = function (range) {
444
+ var cmp, end = range.end, start = range.start;
284
445
  cmp = this.compare(end.row, end.column);
285
446
  if (cmp == 1) {
286
447
  cmp = this.compare(start.row, start.column);
287
448
  if (cmp == 1) {
288
449
  return 2;
289
- } else if (cmp == 0) {
450
+ }
451
+ else if (cmp == 0) {
290
452
  return 1;
291
- } else {
453
+ }
454
+ else {
292
455
  return 0;
293
456
  }
294
- } else if (cmp == -1) {
457
+ }
458
+ else if (cmp == -1) {
295
459
  return -2;
296
- } else {
460
+ }
461
+ else {
297
462
  cmp = this.compare(start.row, start.column);
298
463
  if (cmp == -1) {
299
464
  return -1;
300
- } else if (cmp == 1) {
465
+ }
466
+ else if (cmp == 1) {
301
467
  return 42;
302
- } else {
468
+ }
469
+ else {
303
470
  return 0;
304
471
  }
305
472
  }
306
473
  };
307
- this.comparePoint = function(p) {
474
+ this.comparePoint = function (p) {
308
475
  return this.compare(p.row, p.column);
309
476
  };
310
- this.containsRange = function(range) {
477
+ this.containsRange = function (range) {
311
478
  return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
312
479
  };
313
- this.intersects = function(range) {
480
+ this.intersects = function (range) {
314
481
  var cmp = this.compareRange(range);
315
482
  return (cmp == -1 || cmp == 0 || cmp == 1);
316
483
  };
317
- this.isEnd = function(row, column) {
484
+ this.isEnd = function (row, column) {
318
485
  return this.end.row == row && this.end.column == column;
319
486
  };
320
- this.isStart = function(row, column) {
487
+ this.isStart = function (row, column) {
321
488
  return this.start.row == row && this.start.column == column;
322
489
  };
323
- this.setStart = function(row, column) {
490
+ this.setStart = function (row, column) {
324
491
  if (typeof row == "object") {
325
492
  this.start.column = row.column;
326
493
  this.start.row = row.row;
327
- } else {
494
+ }
495
+ else {
328
496
  this.start.row = row;
329
497
  this.start.column = column;
330
498
  }
331
499
  };
332
- this.setEnd = function(row, column) {
500
+ this.setEnd = function (row, column) {
333
501
  if (typeof row == "object") {
334
502
  this.end.column = row.column;
335
503
  this.end.row = row.row;
336
- } else {
504
+ }
505
+ else {
337
506
  this.end.row = row;
338
507
  this.end.column = column;
339
508
  }
340
509
  };
341
- this.inside = function(row, column) {
510
+ this.inside = function (row, column) {
342
511
  if (this.compare(row, column) == 0) {
343
512
  if (this.isEnd(row, column) || this.isStart(row, column)) {
344
513
  return false;
345
- } else {
514
+ }
515
+ else {
346
516
  return true;
347
517
  }
348
518
  }
349
519
  return false;
350
520
  };
351
- this.insideStart = function(row, column) {
521
+ this.insideStart = function (row, column) {
352
522
  if (this.compare(row, column) == 0) {
353
523
  if (this.isEnd(row, column)) {
354
524
  return false;
355
- } else {
525
+ }
526
+ else {
356
527
  return true;
357
528
  }
358
529
  }
359
530
  return false;
360
531
  };
361
- this.insideEnd = function(row, column) {
532
+ this.insideEnd = function (row, column) {
362
533
  if (this.compare(row, column) == 0) {
363
534
  if (this.isStart(row, column)) {
364
535
  return false;
365
- } else {
536
+ }
537
+ else {
366
538
  return true;
367
539
  }
368
540
  }
369
541
  return false;
370
542
  };
371
- this.compare = function(row, column) {
543
+ this.compare = function (row, column) {
372
544
  if (!this.isMultiLine()) {
373
545
  if (row === this.start.row) {
374
546
  return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
375
547
  }
376
548
  }
377
-
378
549
  if (row < this.start.row)
379
550
  return -1;
380
-
381
551
  if (row > this.end.row)
382
552
  return 1;
383
-
384
553
  if (this.start.row === row)
385
554
  return column >= this.start.column ? 0 : -1;
386
-
387
555
  if (this.end.row === row)
388
556
  return column <= this.end.column ? 0 : 1;
389
-
390
557
  return 0;
391
558
  };
392
- this.compareStart = function(row, column) {
559
+ this.compareStart = function (row, column) {
393
560
  if (this.start.row == row && this.start.column == column) {
394
561
  return -1;
395
- } else {
562
+ }
563
+ else {
396
564
  return this.compare(row, column);
397
565
  }
398
566
  };
399
- this.compareEnd = function(row, column) {
567
+ this.compareEnd = function (row, column) {
400
568
  if (this.end.row == row && this.end.column == column) {
401
569
  return 1;
402
- } else {
570
+ }
571
+ else {
403
572
  return this.compare(row, column);
404
573
  }
405
574
  };
406
- this.compareInside = function(row, column) {
575
+ this.compareInside = function (row, column) {
407
576
  if (this.end.row == row && this.end.column == column) {
408
577
  return 1;
409
- } else if (this.start.row == row && this.start.column == column) {
578
+ }
579
+ else if (this.start.row == row && this.start.column == column) {
410
580
  return -1;
411
- } else {
581
+ }
582
+ else {
412
583
  return this.compare(row, column);
413
584
  }
414
585
  };
415
- this.clipRows = function(firstRow, lastRow) {
586
+ this.clipRows = function (firstRow, lastRow) {
416
587
  if (this.end.row > lastRow)
417
- var end = {row: lastRow + 1, column: 0};
588
+ var end = { row: lastRow + 1, column: 0 };
418
589
  else if (this.end.row < firstRow)
419
- var end = {row: firstRow, column: 0};
420
-
590
+ var end = { row: firstRow, column: 0 };
421
591
  if (this.start.row > lastRow)
422
- var start = {row: lastRow + 1, column: 0};
592
+ var start = { row: lastRow + 1, column: 0 };
423
593
  else if (this.start.row < firstRow)
424
- var start = {row: firstRow, column: 0};
425
-
594
+ var start = { row: firstRow, column: 0 };
426
595
  return Range.fromPoints(start || this.start, end || this.end);
427
596
  };
428
- this.extend = function(row, column) {
597
+ this.extend = function (row, column) {
429
598
  var cmp = this.compare(row, column);
430
-
431
599
  if (cmp == 0)
432
600
  return this;
433
601
  else if (cmp == -1)
434
- var start = {row: row, column: column};
602
+ var start = { row: row, column: column };
435
603
  else
436
- var end = {row: row, column: column};
437
-
604
+ var end = { row: row, column: column };
438
605
  return Range.fromPoints(start || this.start, end || this.end);
439
606
  };
440
-
441
- this.isEmpty = function() {
607
+ this.isEmpty = function () {
442
608
  return (this.start.row === this.end.row && this.start.column === this.end.column);
443
609
  };
444
- this.isMultiLine = function() {
610
+ this.isMultiLine = function () {
445
611
  return (this.start.row !== this.end.row);
446
612
  };
447
- this.clone = function() {
613
+ this.clone = function () {
448
614
  return Range.fromPoints(this.start, this.end);
449
615
  };
450
- this.collapseRows = function() {
616
+ this.collapseRows = function () {
451
617
  if (this.end.column == 0)
452
- return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0);
618
+ return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);
453
619
  else
454
620
  return new Range(this.start.row, 0, this.end.row, 0);
455
621
  };
456
- this.toScreenRange = function(session) {
622
+ this.toScreenRange = function (session) {
457
623
  var screenPosStart = session.documentToScreenPosition(this.start);
458
624
  var screenPosEnd = session.documentToScreenPosition(this.end);
459
-
460
- return new Range(
461
- screenPosStart.row, screenPosStart.column,
462
- screenPosEnd.row, screenPosEnd.column
463
- );
625
+ return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);
464
626
  };
465
- this.moveBy = function(row, column) {
627
+ this.moveBy = function (row, column) {
466
628
  this.start.row += row;
467
629
  this.start.column += column;
468
630
  this.end.row += row;
469
631
  this.end.column += column;
470
632
  };
471
-
472
633
  }).call(Range.prototype);
473
- Range.fromPoints = function(start, end) {
634
+ Range.fromPoints = function (start, end) {
474
635
  return new Range(start.row, start.column, end.row, end.column);
475
636
  };
476
637
  Range.comparePoints = comparePoints;
477
-
478
- Range.comparePoints = function(p1, p2) {
638
+ Range.comparePoints = function (p1, p2) {
479
639
  return p1.row - p2.row || p1.column - p2.column;
480
640
  };
481
-
482
-
483
641
  exports.Range = Range;
484
- });
485
-
486
- ace.define("ace/apply_delta",[], function(require, exports, module) {
487
- "use strict";
488
-
489
- function throwDeltaError(delta, errorText){
490
- console.log("Invalid Delta:", delta);
491
- throw "Invalid Delta: " + errorText;
492
- }
493
-
494
- function positionInDocument(docLines, position) {
495
- return position.row >= 0 && position.row < docLines.length &&
496
- position.column >= 0 && position.column <= docLines[position.row].length;
497
- }
498
-
499
- function validateDelta(docLines, delta) {
500
- if (delta.action != "insert" && delta.action != "remove")
501
- throwDeltaError(delta, "delta.action must be 'insert' or 'remove'");
502
- if (!(delta.lines instanceof Array))
503
- throwDeltaError(delta, "delta.lines must be an Array");
504
- if (!delta.start || !delta.end)
505
- throwDeltaError(delta, "delta.start/end must be an present");
506
- var start = delta.start;
507
- if (!positionInDocument(docLines, delta.start))
508
- throwDeltaError(delta, "delta.start must be contained in document");
509
- var end = delta.end;
510
- if (delta.action == "remove" && !positionInDocument(docLines, end))
511
- throwDeltaError(delta, "delta.end must contained in document for 'remove' actions");
512
- var numRangeRows = end.row - start.row;
513
- var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));
514
- if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)
515
- throwDeltaError(delta, "delta.range must match delta lines");
516
- }
517
-
518
- exports.applyDelta = function(docLines, delta, doNotValidate) {
519
-
520
- var row = delta.start.row;
521
- var startColumn = delta.start.column;
522
- var line = docLines[row] || "";
523
- switch (delta.action) {
524
- case "insert":
525
- var lines = delta.lines;
526
- if (lines.length === 1) {
527
- docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);
528
- } else {
529
- var args = [row, 1].concat(delta.lines);
530
- docLines.splice.apply(docLines, args);
531
- docLines[row] = line.substring(0, startColumn) + docLines[row];
532
- docLines[row + delta.lines.length - 1] += line.substring(startColumn);
533
- }
534
- break;
535
- case "remove":
536
- var endColumn = delta.end.column;
537
- var endRow = delta.end.row;
538
- if (row === endRow) {
539
- docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);
540
- } else {
541
- docLines.splice(
542
- row, endRow - row + 1,
543
- line.substring(0, startColumn) + docLines[endRow].substring(endColumn)
544
- );
545
- }
546
- break;
547
- }
548
- };
549
- });
550
-
551
- ace.define("ace/lib/event_emitter",[], function(require, exports, module) {
552
- "use strict";
553
-
554
- var EventEmitter = {};
555
- var stopPropagation = function() { this.propagationStopped = true; };
556
- var preventDefault = function() { this.defaultPrevented = true; };
557
-
558
- EventEmitter._emit =
559
- EventEmitter._dispatchEvent = function(eventName, e) {
560
- this._eventRegistry || (this._eventRegistry = {});
561
- this._defaultHandlers || (this._defaultHandlers = {});
562
-
563
- var listeners = this._eventRegistry[eventName] || [];
564
- var defaultHandler = this._defaultHandlers[eventName];
565
- if (!listeners.length && !defaultHandler)
566
- return;
567
-
568
- if (typeof e != "object" || !e)
569
- e = {};
570
-
571
- if (!e.type)
572
- e.type = eventName;
573
- if (!e.stopPropagation)
574
- e.stopPropagation = stopPropagation;
575
- if (!e.preventDefault)
576
- e.preventDefault = preventDefault;
577
-
578
- listeners = listeners.slice();
579
- for (var i=0; i<listeners.length; i++) {
580
- listeners[i](e, this);
581
- if (e.propagationStopped)
582
- break;
583
- }
584
-
585
- if (defaultHandler && !e.defaultPrevented)
586
- return defaultHandler(e, this);
587
- };
588
-
589
-
590
- EventEmitter._signal = function(eventName, e) {
591
- var listeners = (this._eventRegistry || {})[eventName];
592
- if (!listeners)
593
- return;
594
- listeners = listeners.slice();
595
- for (var i=0; i<listeners.length; i++)
596
- listeners[i](e, this);
597
- };
598
-
599
- EventEmitter.once = function(eventName, callback) {
600
- var _self = this;
601
- this.on(eventName, function newCallback() {
602
- _self.off(eventName, newCallback);
603
- callback.apply(null, arguments);
604
- });
605
- if (!callback) {
606
- return new Promise(function(resolve) {
607
- callback = resolve;
608
- });
609
- }
610
- };
611
-
612
-
613
- EventEmitter.setDefaultHandler = function(eventName, callback) {
614
- var handlers = this._defaultHandlers;
615
- if (!handlers)
616
- handlers = this._defaultHandlers = {_disabled_: {}};
617
-
618
- if (handlers[eventName]) {
619
- var old = handlers[eventName];
620
- var disabled = handlers._disabled_[eventName];
621
- if (!disabled)
622
- handlers._disabled_[eventName] = disabled = [];
623
- disabled.push(old);
624
- var i = disabled.indexOf(callback);
625
- if (i != -1)
626
- disabled.splice(i, 1);
627
- }
628
- handlers[eventName] = callback;
629
- };
630
- EventEmitter.removeDefaultHandler = function(eventName, callback) {
631
- var handlers = this._defaultHandlers;
632
- if (!handlers)
633
- return;
634
- var disabled = handlers._disabled_[eventName];
635
-
636
- if (handlers[eventName] == callback) {
637
- if (disabled)
638
- this.setDefaultHandler(eventName, disabled.pop());
639
- } else if (disabled) {
640
- var i = disabled.indexOf(callback);
641
- if (i != -1)
642
- disabled.splice(i, 1);
643
- }
644
- };
645
-
646
- EventEmitter.on =
647
- EventEmitter.addEventListener = function(eventName, callback, capturing) {
648
- this._eventRegistry = this._eventRegistry || {};
649
-
650
- var listeners = this._eventRegistry[eventName];
651
- if (!listeners)
652
- listeners = this._eventRegistry[eventName] = [];
653
-
654
- if (listeners.indexOf(callback) == -1)
655
- listeners[capturing ? "unshift" : "push"](callback);
656
- return callback;
657
- };
658
-
659
- EventEmitter.off =
660
- EventEmitter.removeListener =
661
- EventEmitter.removeEventListener = function(eventName, callback) {
662
- this._eventRegistry = this._eventRegistry || {};
663
-
664
- var listeners = this._eventRegistry[eventName];
665
- if (!listeners)
666
- return;
667
-
668
- var index = listeners.indexOf(callback);
669
- if (index !== -1)
670
- listeners.splice(index, 1);
671
- };
672
-
673
- EventEmitter.removeAllListeners = function(eventName) {
674
- if (!eventName) this._eventRegistry = this._defaultHandlers = undefined;
675
- if (this._eventRegistry) this._eventRegistry[eventName] = undefined;
676
- if (this._defaultHandlers) this._defaultHandlers[eventName] = undefined;
677
- };
678
-
679
- exports.EventEmitter = EventEmitter;
680
642
 
681
643
  });
682
644
 
683
- ace.define("ace/anchor",[], function(require, exports, module) {
684
- "use strict";
685
-
645
+ ace.define("ace/anchor",[], function(require, exports, module){"use strict";
686
646
  var oop = require("./lib/oop");
687
647
  var EventEmitter = require("./lib/event_emitter").EventEmitter;
688
-
689
- var Anchor = exports.Anchor = function(doc, row, column) {
648
+ var Anchor = exports.Anchor = function (doc, row, column) {
690
649
  this.$onChange = this.onChange.bind(this);
691
650
  this.attach(doc);
692
-
693
651
  if (typeof column == "undefined")
694
652
  this.setPosition(row.row, row.column);
695
653
  else
696
654
  this.setPosition(row, column);
697
655
  };
698
-
699
- (function() {
700
-
656
+ (function () {
701
657
  oop.implement(this, EventEmitter);
702
- this.getPosition = function() {
658
+ this.getPosition = function () {
703
659
  return this.$clipPositionToDocument(this.row, this.column);
704
660
  };
705
- this.getDocument = function() {
661
+ this.getDocument = function () {
706
662
  return this.document;
707
663
  };
708
664
  this.$insertRight = false;
709
- this.onChange = function(delta) {
665
+ this.onChange = function (delta) {
710
666
  if (delta.start.row == delta.end.row && delta.start.row != this.row)
711
667
  return;
712
-
713
668
  if (delta.start.row > this.row)
714
669
  return;
715
-
716
- var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);
670
+ var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);
717
671
  this.setPosition(point.row, point.column, true);
718
672
  };
719
-
720
673
  function $pointsInOrder(point1, point2, equalPointsInOrder) {
721
674
  var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;
722
675
  return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);
723
676
  }
724
-
725
677
  function $getTransformedPoint(delta, point, moveIfEqual) {
726
678
  var deltaIsInsert = delta.action == "insert";
727
- var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);
679
+ var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);
728
680
  var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);
729
681
  var deltaStart = delta.start;
730
682
  var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.
@@ -740,31 +692,28 @@ var Anchor = exports.Anchor = function(doc, row, column) {
740
692
  column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)
741
693
  };
742
694
  }
743
-
744
695
  return {
745
696
  row: deltaStart.row,
746
697
  column: deltaStart.column
747
698
  };
748
699
  }
749
- this.setPosition = function(row, column, noClip) {
700
+ this.setPosition = function (row, column, noClip) {
750
701
  var pos;
751
702
  if (noClip) {
752
703
  pos = {
753
704
  row: row,
754
705
  column: column
755
706
  };
756
- } else {
707
+ }
708
+ else {
757
709
  pos = this.$clipPositionToDocument(row, column);
758
710
  }
759
-
760
711
  if (this.row == pos.row && this.column == pos.column)
761
712
  return;
762
-
763
713
  var old = {
764
714
  row: this.row,
765
715
  column: this.column
766
716
  };
767
-
768
717
  this.row = pos.row;
769
718
  this.column = pos.column;
770
719
  this._signal("change", {
@@ -772,16 +721,15 @@ var Anchor = exports.Anchor = function(doc, row, column) {
772
721
  value: pos
773
722
  });
774
723
  };
775
- this.detach = function() {
724
+ this.detach = function () {
776
725
  this.document.off("change", this.$onChange);
777
726
  };
778
- this.attach = function(doc) {
727
+ this.attach = function (doc) {
779
728
  this.document = doc || this.document;
780
729
  this.document.on("change", this.$onChange);
781
730
  };
782
- this.$clipPositionToDocument = function(row, column) {
731
+ this.$clipPositionToDocument = function (row, column) {
783
732
  var pos = {};
784
-
785
733
  if (row >= this.document.getLength()) {
786
734
  pos.row = Math.max(0, this.document.getLength() - 1);
787
735
  pos.column = this.document.getLine(pos.row).length;
@@ -794,113 +742,105 @@ var Anchor = exports.Anchor = function(doc, row, column) {
794
742
  pos.row = row;
795
743
  pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
796
744
  }
797
-
798
745
  if (column < 0)
799
746
  pos.column = 0;
800
-
801
747
  return pos;
802
748
  };
803
-
804
749
  }).call(Anchor.prototype);
805
750
 
806
751
  });
807
752
 
808
- ace.define("ace/document",[], function(require, exports, module) {
809
- "use strict";
810
-
753
+ ace.define("ace/document",[], function(require, exports, module){"use strict";
811
754
  var oop = require("./lib/oop");
812
755
  var applyDelta = require("./apply_delta").applyDelta;
813
756
  var EventEmitter = require("./lib/event_emitter").EventEmitter;
814
757
  var Range = require("./range").Range;
815
758
  var Anchor = require("./anchor").Anchor;
816
-
817
- var Document = function(textOrLines) {
759
+ var Document = function (textOrLines) {
818
760
  this.$lines = [""];
819
761
  if (textOrLines.length === 0) {
820
762
  this.$lines = [""];
821
- } else if (Array.isArray(textOrLines)) {
822
- this.insertMergedLines({row: 0, column: 0}, textOrLines);
823
- } else {
824
- this.insert({row: 0, column:0}, textOrLines);
763
+ }
764
+ else if (Array.isArray(textOrLines)) {
765
+ this.insertMergedLines({ row: 0, column: 0 }, textOrLines);
766
+ }
767
+ else {
768
+ this.insert({ row: 0, column: 0 }, textOrLines);
825
769
  }
826
770
  };
827
-
828
- (function() {
829
-
771
+ (function () {
830
772
  oop.implement(this, EventEmitter);
831
- this.setValue = function(text) {
773
+ this.setValue = function (text) {
832
774
  var len = this.getLength() - 1;
833
775
  this.remove(new Range(0, 0, len, this.getLine(len).length));
834
- this.insert({row: 0, column: 0}, text);
776
+ this.insert({ row: 0, column: 0 }, text || "");
835
777
  };
836
- this.getValue = function() {
778
+ this.getValue = function () {
837
779
  return this.getAllLines().join(this.getNewLineCharacter());
838
780
  };
839
- this.createAnchor = function(row, column) {
781
+ this.createAnchor = function (row, column) {
840
782
  return new Anchor(this, row, column);
841
783
  };
842
784
  if ("aaa".split(/a/).length === 0) {
843
- this.$split = function(text) {
785
+ this.$split = function (text) {
844
786
  return text.replace(/\r\n|\r/g, "\n").split("\n");
845
787
  };
846
- } else {
847
- this.$split = function(text) {
788
+ }
789
+ else {
790
+ this.$split = function (text) {
848
791
  return text.split(/\r\n|\r|\n/);
849
792
  };
850
793
  }
851
-
852
-
853
- this.$detectNewLine = function(text) {
794
+ this.$detectNewLine = function (text) {
854
795
  var match = text.match(/^.*?(\r\n|\r|\n)/m);
855
796
  this.$autoNewLine = match ? match[1] : "\n";
856
797
  this._signal("changeNewLineMode");
857
798
  };
858
- this.getNewLineCharacter = function() {
799
+ this.getNewLineCharacter = function () {
859
800
  switch (this.$newLineMode) {
860
- case "windows":
861
- return "\r\n";
862
- case "unix":
863
- return "\n";
864
- default:
865
- return this.$autoNewLine || "\n";
801
+ case "windows":
802
+ return "\r\n";
803
+ case "unix":
804
+ return "\n";
805
+ default:
806
+ return this.$autoNewLine || "\n";
866
807
  }
867
808
  };
868
-
869
809
  this.$autoNewLine = "";
870
810
  this.$newLineMode = "auto";
871
- this.setNewLineMode = function(newLineMode) {
811
+ this.setNewLineMode = function (newLineMode) {
872
812
  if (this.$newLineMode === newLineMode)
873
813
  return;
874
-
875
814
  this.$newLineMode = newLineMode;
876
815
  this._signal("changeNewLineMode");
877
816
  };
878
- this.getNewLineMode = function() {
817
+ this.getNewLineMode = function () {
879
818
  return this.$newLineMode;
880
819
  };
881
- this.isNewLine = function(text) {
820
+ this.isNewLine = function (text) {
882
821
  return (text == "\r\n" || text == "\r" || text == "\n");
883
822
  };
884
- this.getLine = function(row) {
823
+ this.getLine = function (row) {
885
824
  return this.$lines[row] || "";
886
825
  };
887
- this.getLines = function(firstRow, lastRow) {
826
+ this.getLines = function (firstRow, lastRow) {
888
827
  return this.$lines.slice(firstRow, lastRow + 1);
889
828
  };
890
- this.getAllLines = function() {
829
+ this.getAllLines = function () {
891
830
  return this.getLines(0, this.getLength());
892
831
  };
893
- this.getLength = function() {
832
+ this.getLength = function () {
894
833
  return this.$lines.length;
895
834
  };
896
- this.getTextRange = function(range) {
835
+ this.getTextRange = function (range) {
897
836
  return this.getLinesForRange(range).join(this.getNewLineCharacter());
898
837
  };
899
- this.getLinesForRange = function(range) {
838
+ this.getLinesForRange = function (range) {
900
839
  var lines;
901
840
  if (range.start.row === range.end.row) {
902
841
  lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];
903
- } else {
842
+ }
843
+ else {
904
844
  lines = this.getLines(range.start.row, range.end.row);
905
845
  lines[0] = (lines[0] || "").substring(range.start.column);
906
846
  var l = lines.length - 1;
@@ -909,45 +849,43 @@ var Document = function(textOrLines) {
909
849
  }
910
850
  return lines;
911
851
  };
912
- this.insertLines = function(row, lines) {
852
+ this.insertLines = function (row, lines) {
913
853
  console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead.");
914
854
  return this.insertFullLines(row, lines);
915
855
  };
916
- this.removeLines = function(firstRow, lastRow) {
856
+ this.removeLines = function (firstRow, lastRow) {
917
857
  console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead.");
918
858
  return this.removeFullLines(firstRow, lastRow);
919
859
  };
920
- this.insertNewLine = function(position) {
860
+ this.insertNewLine = function (position) {
921
861
  console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.");
922
862
  return this.insertMergedLines(position, ["", ""]);
923
863
  };
924
- this.insert = function(position, text) {
864
+ this.insert = function (position, text) {
925
865
  if (this.getLength() <= 1)
926
866
  this.$detectNewLine(text);
927
-
928
867
  return this.insertMergedLines(position, this.$split(text));
929
868
  };
930
- this.insertInLine = function(position, text) {
869
+ this.insertInLine = function (position, text) {
931
870
  var start = this.clippedPos(position.row, position.column);
932
871
  var end = this.pos(position.row, position.column + text.length);
933
-
934
872
  this.applyDelta({
935
873
  start: start,
936
874
  end: end,
937
875
  action: "insert",
938
876
  lines: [text]
939
877
  }, true);
940
-
941
878
  return this.clonePos(end);
942
879
  };
943
-
944
- this.clippedPos = function(row, column) {
880
+ this.clippedPos = function (row, column) {
945
881
  var length = this.getLength();
946
882
  if (row === undefined) {
947
883
  row = length;
948
- } else if (row < 0) {
884
+ }
885
+ else if (row < 0) {
949
886
  row = 0;
950
- } else if (row >= length) {
887
+ }
888
+ else if (row >= length) {
951
889
  row = length - 1;
952
890
  column = undefined;
953
891
  }
@@ -955,93 +893,87 @@ var Document = function(textOrLines) {
955
893
  if (column == undefined)
956
894
  column = line.length;
957
895
  column = Math.min(Math.max(column, 0), line.length);
958
- return {row: row, column: column};
896
+ return { row: row, column: column };
959
897
  };
960
-
961
- this.clonePos = function(pos) {
962
- return {row: pos.row, column: pos.column};
898
+ this.clonePos = function (pos) {
899
+ return { row: pos.row, column: pos.column };
963
900
  };
964
-
965
- this.pos = function(row, column) {
966
- return {row: row, column: column};
901
+ this.pos = function (row, column) {
902
+ return { row: row, column: column };
967
903
  };
968
-
969
- this.$clipPosition = function(position) {
904
+ this.$clipPosition = function (position) {
970
905
  var length = this.getLength();
971
906
  if (position.row >= length) {
972
907
  position.row = Math.max(0, length - 1);
973
908
  position.column = this.getLine(length - 1).length;
974
- } else {
909
+ }
910
+ else {
975
911
  position.row = Math.max(0, position.row);
976
912
  position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);
977
913
  }
978
914
  return position;
979
915
  };
980
- this.insertFullLines = function(row, lines) {
916
+ this.insertFullLines = function (row, lines) {
981
917
  row = Math.min(Math.max(row, 0), this.getLength());
982
918
  var column = 0;
983
919
  if (row < this.getLength()) {
984
920
  lines = lines.concat([""]);
985
921
  column = 0;
986
- } else {
922
+ }
923
+ else {
987
924
  lines = [""].concat(lines);
988
925
  row--;
989
926
  column = this.$lines[row].length;
990
927
  }
991
- this.insertMergedLines({row: row, column: column}, lines);
992
- };
993
- this.insertMergedLines = function(position, lines) {
928
+ this.insertMergedLines({ row: row, column: column }, lines);
929
+ };
930
+ this.insertMergedLines = function (position, lines) {
994
931
  var start = this.clippedPos(position.row, position.column);
995
932
  var end = {
996
933
  row: start.row + lines.length - 1,
997
934
  column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length
998
935
  };
999
-
1000
936
  this.applyDelta({
1001
937
  start: start,
1002
938
  end: end,
1003
939
  action: "insert",
1004
940
  lines: lines
1005
941
  });
1006
-
1007
942
  return this.clonePos(end);
1008
943
  };
1009
- this.remove = function(range) {
944
+ this.remove = function (range) {
1010
945
  var start = this.clippedPos(range.start.row, range.start.column);
1011
946
  var end = this.clippedPos(range.end.row, range.end.column);
1012
947
  this.applyDelta({
1013
948
  start: start,
1014
949
  end: end,
1015
950
  action: "remove",
1016
- lines: this.getLinesForRange({start: start, end: end})
951
+ lines: this.getLinesForRange({ start: start, end: end })
1017
952
  });
1018
953
  return this.clonePos(start);
1019
954
  };
1020
- this.removeInLine = function(row, startColumn, endColumn) {
955
+ this.removeInLine = function (row, startColumn, endColumn) {
1021
956
  var start = this.clippedPos(row, startColumn);
1022
957
  var end = this.clippedPos(row, endColumn);
1023
-
1024
958
  this.applyDelta({
1025
959
  start: start,
1026
960
  end: end,
1027
961
  action: "remove",
1028
- lines: this.getLinesForRange({start: start, end: end})
962
+ lines: this.getLinesForRange({ start: start, end: end })
1029
963
  }, true);
1030
-
1031
964
  return this.clonePos(start);
1032
965
  };
1033
- this.removeFullLines = function(firstRow, lastRow) {
966
+ this.removeFullLines = function (firstRow, lastRow) {
1034
967
  firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);
1035
- lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);
968
+ lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);
1036
969
  var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;
1037
- var deleteLastNewLine = lastRow < this.getLength() - 1;
1038
- var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );
1039
- var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );
1040
- var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );
1041
- var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length );
970
+ var deleteLastNewLine = lastRow < this.getLength() - 1;
971
+ var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);
972
+ var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);
973
+ var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);
974
+ var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);
1042
975
  var range = new Range(startRow, startCol, endRow, endCol);
1043
976
  var deletedLines = this.$lines.slice(firstRow, lastRow + 1);
1044
-
1045
977
  this.applyDelta({
1046
978
  start: range.start,
1047
979
  end: range.end,
@@ -1050,7 +982,7 @@ var Document = function(textOrLines) {
1050
982
  });
1051
983
  return deletedLines;
1052
984
  };
1053
- this.removeNewLine = function(row) {
985
+ this.removeNewLine = function (row) {
1054
986
  if (row < this.getLength() - 1 && row >= 0) {
1055
987
  this.applyDelta({
1056
988
  start: this.pos(row, this.getLine(row).length),
@@ -1060,14 +992,13 @@ var Document = function(textOrLines) {
1060
992
  });
1061
993
  }
1062
994
  };
1063
- this.replace = function(range, text) {
995
+ this.replace = function (range, text) {
1064
996
  if (!(range instanceof Range))
1065
997
  range = Range.fromPoints(range.start, range.end);
1066
998
  if (text.length === 0 && range.isEmpty())
1067
999
  return range.start;
1068
1000
  if (text == this.getTextRange(range))
1069
1001
  return range.end;
1070
-
1071
1002
  this.remove(range);
1072
1003
  var end;
1073
1004
  if (text) {
@@ -1076,26 +1007,24 @@ var Document = function(textOrLines) {
1076
1007
  else {
1077
1008
  end = range.start;
1078
1009
  }
1079
-
1080
1010
  return end;
1081
1011
  };
1082
- this.applyDeltas = function(deltas) {
1083
- for (var i=0; i<deltas.length; i++) {
1012
+ this.applyDeltas = function (deltas) {
1013
+ for (var i = 0; i < deltas.length; i++) {
1084
1014
  this.applyDelta(deltas[i]);
1085
1015
  }
1086
1016
  };
1087
- this.revertDeltas = function(deltas) {
1088
- for (var i=deltas.length-1; i>=0; i--) {
1017
+ this.revertDeltas = function (deltas) {
1018
+ for (var i = deltas.length - 1; i >= 0; i--) {
1089
1019
  this.revertDelta(deltas[i]);
1090
1020
  }
1091
1021
  };
1092
- this.applyDelta = function(delta, doNotValidate) {
1022
+ this.applyDelta = function (delta, doNotValidate) {
1093
1023
  var isInsert = delta.action == "insert";
1094
1024
  if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]
1095
1025
  : !Range.comparePoints(delta.start, delta.end)) {
1096
1026
  return;
1097
1027
  }
1098
-
1099
1028
  if (isInsert && delta.lines.length > 20000) {
1100
1029
  this.$splitAndapplyLargeDelta(delta, 20000);
1101
1030
  }
@@ -1104,21 +1033,17 @@ var Document = function(textOrLines) {
1104
1033
  this._signal("change", delta);
1105
1034
  }
1106
1035
  };
1107
-
1108
- this.$safeApplyDelta = function(delta) {
1036
+ this.$safeApplyDelta = function (delta) {
1109
1037
  var docLength = this.$lines.length;
1110
- if (
1111
- delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength
1112
- || delta.action == "insert" && delta.start.row <= docLength
1113
- ) {
1038
+ if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength
1039
+ || delta.action == "insert" && delta.start.row <= docLength) {
1114
1040
  this.applyDelta(delta);
1115
1041
  }
1116
1042
  };
1117
-
1118
- this.$splitAndapplyLargeDelta = function(delta, MAX) {
1043
+ this.$splitAndapplyLargeDelta = function (delta, MAX) {
1119
1044
  var lines = delta.lines;
1120
1045
  var l = lines.length - MAX + 1;
1121
- var row = delta.start.row;
1046
+ var row = delta.start.row;
1122
1047
  var column = delta.start.column;
1123
1048
  for (var from = 0, to = 0; from < l; from = to) {
1124
1049
  to += MAX - 1;
@@ -1136,7 +1061,7 @@ var Document = function(textOrLines) {
1136
1061
  delta.start.column = column;
1137
1062
  this.applyDelta(delta, true);
1138
1063
  };
1139
- this.revertDelta = function(delta) {
1064
+ this.revertDelta = function (delta) {
1140
1065
  this.$safeApplyDelta({
1141
1066
  start: this.clonePos(delta.start),
1142
1067
  end: this.clonePos(delta.end),
@@ -1144,85 +1069,72 @@ var Document = function(textOrLines) {
1144
1069
  lines: delta.lines.slice()
1145
1070
  });
1146
1071
  };
1147
- this.indexToPosition = function(index, startRow) {
1072
+ this.indexToPosition = function (index, startRow) {
1148
1073
  var lines = this.$lines || this.getAllLines();
1149
1074
  var newlineLength = this.getNewLineCharacter().length;
1150
1075
  for (var i = startRow || 0, l = lines.length; i < l; i++) {
1151
1076
  index -= lines[i].length + newlineLength;
1152
1077
  if (index < 0)
1153
- return {row: i, column: index + lines[i].length + newlineLength};
1078
+ return { row: i, column: index + lines[i].length + newlineLength };
1154
1079
  }
1155
- return {row: l-1, column: index + lines[l-1].length + newlineLength};
1080
+ return { row: l - 1, column: index + lines[l - 1].length + newlineLength };
1156
1081
  };
1157
- this.positionToIndex = function(pos, startRow) {
1082
+ this.positionToIndex = function (pos, startRow) {
1158
1083
  var lines = this.$lines || this.getAllLines();
1159
1084
  var newlineLength = this.getNewLineCharacter().length;
1160
1085
  var index = 0;
1161
1086
  var row = Math.min(pos.row, lines.length);
1162
1087
  for (var i = startRow || 0; i < row; ++i)
1163
1088
  index += lines[i].length + newlineLength;
1164
-
1165
1089
  return index + pos.column;
1166
1090
  };
1167
-
1168
1091
  }).call(Document.prototype);
1169
-
1170
1092
  exports.Document = Document;
1171
- });
1172
1093
 
1173
- ace.define("ace/lib/lang",[], function(require, exports, module) {
1174
- "use strict";
1094
+ });
1175
1095
 
1176
- exports.last = function(a) {
1096
+ ace.define("ace/lib/lang",[], function(require, exports, module){"use strict";
1097
+ exports.last = function (a) {
1177
1098
  return a[a.length - 1];
1178
1099
  };
1179
-
1180
- exports.stringReverse = function(string) {
1100
+ exports.stringReverse = function (string) {
1181
1101
  return string.split("").reverse().join("");
1182
1102
  };
1183
-
1184
1103
  exports.stringRepeat = function (string, count) {
1185
1104
  var result = '';
1186
1105
  while (count > 0) {
1187
1106
  if (count & 1)
1188
1107
  result += string;
1189
-
1190
1108
  if (count >>= 1)
1191
1109
  string += string;
1192
1110
  }
1193
1111
  return result;
1194
1112
  };
1195
-
1196
1113
  var trimBeginRegexp = /^\s\s*/;
1197
1114
  var trimEndRegexp = /\s\s*$/;
1198
-
1199
1115
  exports.stringTrimLeft = function (string) {
1200
1116
  return string.replace(trimBeginRegexp, '');
1201
1117
  };
1202
-
1203
1118
  exports.stringTrimRight = function (string) {
1204
1119
  return string.replace(trimEndRegexp, '');
1205
1120
  };
1206
-
1207
- exports.copyObject = function(obj) {
1121
+ exports.copyObject = function (obj) {
1208
1122
  var copy = {};
1209
1123
  for (var key in obj) {
1210
1124
  copy[key] = obj[key];
1211
1125
  }
1212
1126
  return copy;
1213
1127
  };
1214
-
1215
- exports.copyArray = function(array){
1128
+ exports.copyArray = function (array) {
1216
1129
  var copy = [];
1217
- for (var i=0, l=array.length; i<l; i++) {
1130
+ for (var i = 0, l = array.length; i < l; i++) {
1218
1131
  if (array[i] && typeof array[i] == "object")
1219
1132
  copy[i] = this.copyObject(array[i]);
1220
- else
1133
+ else
1221
1134
  copy[i] = array[i];
1222
1135
  }
1223
1136
  return copy;
1224
1137
  };
1225
-
1226
1138
  exports.deepCopy = function deepCopy(obj) {
1227
1139
  if (typeof obj !== "object" || !obj)
1228
1140
  return obj;
@@ -1236,132 +1148,109 @@ exports.deepCopy = function deepCopy(obj) {
1236
1148
  }
1237
1149
  if (Object.prototype.toString.call(obj) !== "[object Object]")
1238
1150
  return obj;
1239
-
1240
1151
  copy = {};
1241
1152
  for (var key in obj)
1242
1153
  copy[key] = deepCopy(obj[key]);
1243
1154
  return copy;
1244
1155
  };
1245
-
1246
- exports.arrayToMap = function(arr) {
1156
+ exports.arrayToMap = function (arr) {
1247
1157
  var map = {};
1248
- for (var i=0; i<arr.length; i++) {
1158
+ for (var i = 0; i < arr.length; i++) {
1249
1159
  map[arr[i]] = 1;
1250
1160
  }
1251
1161
  return map;
1252
-
1253
1162
  };
1254
-
1255
- exports.createMap = function(props) {
1163
+ exports.createMap = function (props) {
1256
1164
  var map = Object.create(null);
1257
1165
  for (var i in props) {
1258
1166
  map[i] = props[i];
1259
1167
  }
1260
1168
  return map;
1261
1169
  };
1262
- exports.arrayRemove = function(array, value) {
1263
- for (var i = 0; i <= array.length; i++) {
1264
- if (value === array[i]) {
1265
- array.splice(i, 1);
1170
+ exports.arrayRemove = function (array, value) {
1171
+ for (var i = 0; i <= array.length; i++) {
1172
+ if (value === array[i]) {
1173
+ array.splice(i, 1);
1174
+ }
1266
1175
  }
1267
- }
1268
1176
  };
1269
-
1270
- exports.escapeRegExp = function(str) {
1177
+ exports.escapeRegExp = function (str) {
1271
1178
  return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
1272
1179
  };
1273
-
1274
- exports.escapeHTML = function(str) {
1180
+ exports.escapeHTML = function (str) {
1275
1181
  return ("" + str).replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;");
1276
1182
  };
1277
-
1278
- exports.getMatchOffsets = function(string, regExp) {
1183
+ exports.getMatchOffsets = function (string, regExp) {
1279
1184
  var matches = [];
1280
-
1281
- string.replace(regExp, function(str) {
1185
+ string.replace(regExp, function (str) {
1282
1186
  matches.push({
1283
- offset: arguments[arguments.length-2],
1187
+ offset: arguments[arguments.length - 2],
1284
1188
  length: str.length
1285
1189
  });
1286
1190
  });
1287
-
1288
1191
  return matches;
1289
1192
  };
1290
- exports.deferredCall = function(fcn) {
1193
+ exports.deferredCall = function (fcn) {
1291
1194
  var timer = null;
1292
- var callback = function() {
1195
+ var callback = function () {
1293
1196
  timer = null;
1294
1197
  fcn();
1295
1198
  };
1296
-
1297
- var deferred = function(timeout) {
1199
+ var deferred = function (timeout) {
1298
1200
  deferred.cancel();
1299
1201
  timer = setTimeout(callback, timeout || 0);
1300
1202
  return deferred;
1301
1203
  };
1302
-
1303
1204
  deferred.schedule = deferred;
1304
-
1305
- deferred.call = function() {
1205
+ deferred.call = function () {
1306
1206
  this.cancel();
1307
1207
  fcn();
1308
1208
  return deferred;
1309
1209
  };
1310
-
1311
- deferred.cancel = function() {
1210
+ deferred.cancel = function () {
1312
1211
  clearTimeout(timer);
1313
1212
  timer = null;
1314
1213
  return deferred;
1315
1214
  };
1316
-
1317
- deferred.isPending = function() {
1215
+ deferred.isPending = function () {
1318
1216
  return timer;
1319
1217
  };
1320
-
1321
1218
  return deferred;
1322
1219
  };
1323
-
1324
-
1325
- exports.delayedCall = function(fcn, defaultTimeout) {
1220
+ exports.delayedCall = function (fcn, defaultTimeout) {
1326
1221
  var timer = null;
1327
- var callback = function() {
1222
+ var callback = function () {
1328
1223
  timer = null;
1329
1224
  fcn();
1330
1225
  };
1331
-
1332
- var _self = function(timeout) {
1226
+ var _self = function (timeout) {
1333
1227
  if (timer == null)
1334
1228
  timer = setTimeout(callback, timeout || defaultTimeout);
1335
1229
  };
1336
-
1337
- _self.delay = function(timeout) {
1230
+ _self.delay = function (timeout) {
1338
1231
  timer && clearTimeout(timer);
1339
1232
  timer = setTimeout(callback, timeout || defaultTimeout);
1340
1233
  };
1341
1234
  _self.schedule = _self;
1342
-
1343
- _self.call = function() {
1235
+ _self.call = function () {
1344
1236
  this.cancel();
1345
1237
  fcn();
1346
1238
  };
1347
-
1348
- _self.cancel = function() {
1239
+ _self.cancel = function () {
1349
1240
  timer && clearTimeout(timer);
1350
1241
  timer = null;
1351
1242
  };
1352
-
1353
- _self.isPending = function() {
1243
+ _self.isPending = function () {
1354
1244
  return timer;
1355
1245
  };
1356
-
1357
1246
  return _self;
1358
1247
  };
1248
+
1359
1249
  });
1360
1250
 
1361
1251
  ace.define("ace/worker/mirror",[], function(require, exports, module) {
1362
1252
  "use strict";
1363
1253
 
1364
- var Range = require("../range").Range;
1365
1254
  var Document = require("../document").Document;
1366
1255
  var lang = require("../lib/lang");
1367
1256
 
@@ -1378,11 +1267,24 @@ var Mirror = exports.Mirror = function(sender) {
1378
1267
  doc.applyDeltas(data);
1379
1268
  } else {
1380
1269
  for (var i = 0; i < data.length; i += 2) {
1270
+ var d, err;
1381
1271
  if (Array.isArray(data[i+1])) {
1382
- var d = {action: "insert", start: data[i], lines: data[i+1]};
1272
+ d = {action: "insert", start: data[i], lines: data[i+1]};
1383
1273
  } else {
1384
- var d = {action: "remove", start: data[i], end: data[i+1]};
1274
+ d = {action: "remove", start: data[i], end: data[i+1]};
1385
1275
  }
1276
+
1277
+ if ((d.action == "insert" ? d.start : d.end).row >= doc.$lines.length) {
1278
+ err = new Error("Invalid delta");
1279
+ err.data = {
1280
+ path: _self.$path,
1281
+ linesLength: doc.$lines.length,
1282
+ start: d.start,
1283
+ end: d.end
1284
+ };
1285
+ throw err;
1286
+ }
1287
+
1386
1288
  doc.applyDelta(d, true);
1387
1289
  }
1388
1290
  }