| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | 
							- /*
 
-  * Released under BSD License
 
-  * Copyright (c) 2014-2021 hizzgdev@163.com
 
-  * 
 
-  * Project Home:
 
-  *   https://github.com/hizzgdev/jsmind/
 
-  */
 
- (function ($w) {
 
-     'use strict';
 
-     var $d = $w.document;
 
-     var __name__ = 'jsMind';
 
-     var jsMind = $w[__name__];
 
-     if (!jsMind) { return; }
 
-     if (typeof (jsMind.shell) != 'undefined') { return; }
 
-     var options = {
 
-         play_delay: 1000
 
-     };
 
-     jsMind.shell = function (jm) {
 
-         this.jm = jm;
 
-         this.step = 0;
 
-         this.commands = []; //version
 
-         this.delay_handle = 0;
 
-         this.playing = false;
 
-         this.jm_editable = this.jm.get_editable();
 
-     };
 
-     jsMind.shell.prototype = {
 
-         init: function () {
 
-             this.playing = false;
 
-         },
 
-         record: function (action, obj) {
 
-             if (!this.playing) {
 
-                 var command = { action: action, data: obj.data, node: obj.node };
 
-                 var prev_command = this.commands[this.step - 1];
 
-                 if (command.action === 'update_node' && prev_command.action === 'add_node' && prev_command.data[2] === 'New Node') {
 
-                     prev_command.data[2] = command.data[1];
 
-                     this.commands[this.step - 1] = prev_command;
 
-                 } else {
 
-                     this.step = this.commands.push(command);
 
-                 }
 
-             }
 
-         },
 
-         execute: function (command) {
 
-             var func = this.jm[command.action];
 
-             var node = command.node;
 
-             this.jm.enable_edit();
 
-             func.apply(this.jm, command.data);
 
-             this.jm.disable_edit();
 
-             if (!!node) {
 
-                 this.jm.select_node(node);
 
-             }
 
-         },
 
-         add_command: function (command) {
 
-             this.commands.push(command);
 
-             play();
 
-         },
 
-         replay: function () {
 
-             this.step = 0;
 
-             this.play();
 
-         },
 
-         play: function () {
 
-             this.jm.disable_edit();
 
-             this.playing = true;
 
-             this._play_stepbystep();
 
-         },
 
-         _play_stepbystep: function () {
 
-             if (this.delay_handle != 0) {
 
-                 $w.clearTimeout(this.delay_handle);
 
-                 this.delay_handle = 0;
 
-             }
 
-             if (this.step < this.commands.length) {
 
-                 this.execute(this.commands[this.step]);
 
-                 this.step++;
 
-                 var js = this;
 
-                 this.delay_handle = $w.setTimeout(function () {
 
-                     js.play.call(js);
 
-                 }, options.play_delay);
 
-             } else {
 
-                 this._play_end();
 
-             }
 
-         },
 
-         _play_end: function () {
 
-             this.playing = false;
 
-             if (this.jm_editable) {
 
-                 this.jm.enable_edit();
 
-             } else {
 
-                 this.jm.disable_edit();
 
-             }
 
-         },
 
-         jm_event_handle: function (type, data) {
 
-             if (type === jsMind.event_type.show) {
 
-                 this.record('show', data);
 
-             }
 
-             if (type === jsMind.event_type.edit) {
 
-                 var action = data.evt;
 
-                 delete data.evt;
 
-                 this.record(action, data);
 
-             }
 
-         }
 
-     };
 
-     var shell_plugin = new jsMind.plugin('shell', function (jm) {
 
-         var js = new jsMind.shell(jm);
 
-         jm.shell = js;
 
-         js.init();
 
-         jm.add_event_listener(function (type, data) {
 
-             js.jm_event_handle.call(js, type, data);
 
-         });
 
-     });
 
-     jsMind.register_plugin(shell_plugin);
 
- })(window);
 
 
  |