web/res/js/jquery.splitter.js
author ymh <ymh.work@gmail.com>
Wed, 18 Dec 2024 12:52:21 +0100
changeset 1583 459a88818bec
parent 1514 5869151a1f2f
permissions -rwxr-xr-x
add jquery and dashjs to client page
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1198
ff4b567d51f2 upgrade metadataplayer and add annotation creation
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     1
/*!
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
     2
 * jQuery Spliter Plugin version 0.28.3
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
     3
 * Copyright (C) 2010-2019 Jakub T. Jankiewicz <https://jcubic.pl/me>
1198
ff4b567d51f2 upgrade metadataplayer and add annotation creation
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     4
 *
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
     5
 * This program is free software: you can redistribute it and/or modify
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
     6
 * it under the terms of the GNU Lesser General Public License as published by
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
     7
 * the Free Software Foundation, either version 3 of the License, or
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
     8
 * (at your option) any later version.
1198
ff4b567d51f2 upgrade metadataplayer and add annotation creation
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     9
 *
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    13
 * GNU Lesser General Public License for more details.
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 1198
diff changeset
    14
 *
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    15
 * You should have received a copy of the GNU Lesser General Public License
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    16
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
1198
ff4b567d51f2 upgrade metadataplayer and add annotation creation
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    17
 */
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    18
/* global module, define, global, require, setTimeout */
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    19
// UMD taken from https://github.com/umdjs/umd
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    20
(function(factory, undefined) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    21
    var root = typeof window !== 'undefined' ? window : global;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    22
    if (typeof define === 'function' && define.amd) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    23
        // AMD. Register as an anonymous module.
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    24
        // istanbul ignore next
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    25
        define(['jquery'], factory);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    26
    } else if (typeof module === 'object' && module.exports) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    27
        // Node/CommonJS
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    28
        module.exports = function(root, jQuery) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    29
            if (jQuery === undefined) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    30
                // require('jQuery') returns a factory that requires window to
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    31
                // build a jQuery instance, we normalize how we use modules
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    32
                // that require this pattern but the window provided is a noop
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    33
                // if it's defined (how jquery works)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    34
                if (window !== undefined) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    35
                    jQuery = require('jquery');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    36
                } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    37
                    jQuery = require('jquery')(root);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    38
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    39
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    40
            factory(jQuery);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    41
            return jQuery;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    42
        };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    43
    } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    44
        // Browser
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    45
        // istanbul ignore next
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    46
        factory(root.jQuery);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    47
    }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    48
})(function($, undefined) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    49
    var count = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    50
    var splitter_id = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    51
    var splitters = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    52
    var current_splitter = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    53
    var current_splitter_index = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    54
    $.fn.split = function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    55
        var data = this.data('splitter');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    56
        if (data) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    57
            return data;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    58
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    59
        var panels = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    60
        var $splitters = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    61
        var panel_1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    62
        var panel_2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    63
        var settings = $.extend({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    64
            limit: 100,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    65
            orientation: 'horizontal',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    66
            position: '50%',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    67
            invisible: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    68
            onDragStart: $.noop,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    69
            onDragEnd: $.noop,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    70
            onDrag: $.noop,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    71
            percent: false
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    72
        }, options || {});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    73
        this.settings = settings;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    74
        var cls;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    75
        var children = this.children();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    76
        if (children.length === 2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    77
            if (settings.orientation == 'vertical') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    78
                panel_1 = children.first().addClass('left_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    79
                panel_2 = panel_1.next().addClass('right_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    80
                cls = 'vsplitter';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    81
            } else if (settings.orientation == 'horizontal') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    82
                panel_1 = children.first().addClass('top_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    83
                panel_2 = panel_1.next().addClass('bottom_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    84
                cls = 'hsplitter';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    85
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    86
            panels = [panel_1, panel_2];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    87
        } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    88
            children.each(function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    89
                var panel = $(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    90
                if (settings.orientation == 'vertical') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    91
                    panel.addClass('vertical_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    92
                    cls = 'vsplitter';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    93
                } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    94
                    panel.addClass('horizontal_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    95
                    cls = 'hsplitter';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    96
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    97
                panels.push(panel);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    98
            });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    99
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   100
        if (settings.invisible) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   101
            cls += ' splitter-invisible';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   102
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   103
        var width = this.width();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   104
        var height = this.height();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   105
        this.addClass('splitter_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   106
        var id = count++;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   107
        panels.slice(0, -1).forEach(function(panel, i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   108
            var splitter = $('<div/>').addClass(cls).on('mouseenter touchstart', function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   109
                splitter_id = id;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   110
                current_splitter_index = splitter.index() - i - 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   111
            }).on('mouseleave touchend', function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   112
                splitter_id = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   113
                current_splitter_index = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   114
            }).insertAfter(panel);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   115
            $splitters.push(splitter);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   116
        });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   117
        var position;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   118
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   119
        function get_position(position) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   120
            if (position instanceof Array) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   121
                return position.map(get_position);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   122
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   123
            if (typeof position === 'number') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   124
                return position;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   125
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   126
            if (typeof position === 'string') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   127
                var match = position.match(/^([0-9\.]+)(px|%)$/);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   128
                if (match) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   129
                    if (match[2] == 'px') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   130
                        return +match[1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   131
                    } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   132
                        if (settings.orientation == 'vertical') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   133
                            return (width * +match[1]) / 100;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   134
                        } else if (settings.orientation == 'horizontal') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   135
                            return (height * +match[1]) / 100;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   136
                        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   137
                    }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   138
                } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   139
                    //throw position + ' is invalid value';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   140
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   141
            } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   142
                //throw 'position have invalid type';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   143
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   144
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   145
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   146
        function set_limit(limit) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   147
            if(!isNaN(parseFloat(limit)) && isFinite(limit)){
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   148
                return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   149
                    leftUpper: limit,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   150
                    rightBottom: limit
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   151
                };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   152
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   153
            return limit;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   154
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   155
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   156
        var self = $.extend(this, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   157
            refresh: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   158
                var new_width = this.width();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   159
                var new_height = this.height();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   160
                if (width != new_width || height != new_height) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   161
                    width = this.width();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   162
                    height = this.height();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   163
                    self.position(position);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   164
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   165
            },
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   166
            option: function(name, value) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   167
                if (name === 'position') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   168
                    return self.position(value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   169
                } else if (typeof value === 'undefined') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   170
                    return settings[name];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   171
                } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   172
                    settings[name] = value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   173
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   174
                return self;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   175
            },
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   176
            position: (function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   177
                function make_sizer(dim_name, pos_name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   178
                    return function(n, silent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   179
                        if (n === undefined) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   180
                            return position;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   181
                        } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   182
                            position = get_position(n);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   183
                            if (!(position instanceof Array)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   184
                                position = [position];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   185
                            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   186
                            if (position.length !== panels.length - 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   187
                                throw new Error('position array need to equal splitters length');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   188
                            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   189
                            var outer_name = 'outer';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   190
                            outer_name += dim_name[0].toUpperCase() + dim_name.substring(1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   191
                            var dim_px = self.css('visiblity', 'hidden')[dim_name]();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   192
                            var pw = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   193
                            var sw_sum = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   194
                            for (var i = 0; i < position.length; ++i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   195
                                var splitter = $splitters[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   196
                                var panel = panels[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   197
                                var pos = position[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   198
                                var splitter_dim = splitter[dim_name]();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   199
                                var sw2 = splitter_dim/2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   200
                                if (settings.invisible) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   201
                                    pw += panel[dim_name](pos)[outer_name]();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   202
                                    splitter.css(pos_name, pw - (sw2 * (i + 1)));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   203
                                } else if (settings.percent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   204
                                    var w1 = (pos - sw2) / dim_px * 100;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   205
                                    var l1 = (pw + sw_sum) / dim_px * 100;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   206
                                    panel.css(pos_name, l1 + '%');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   207
                                    pw += panel.css(dim_name, w1 + '%')[outer_name]();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   208
                                    splitter.css(pos_name, (pw + sw_sum) / dim_px * 100 + '%');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   209
                                } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   210
                                    panel.css(pos_name, pw + sw_sum);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   211
                                    pw += panel.css(dim_name, pos - sw2)[outer_name]();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   212
                                    splitter.css(pos_name, pw + sw_sum);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   213
                                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   214
                                sw_sum += splitter_dim;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   215
                            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   216
                            var panel_last = panels[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   217
                            if (settings.invisible) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   218
                                panel_last.height(height - pw);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   219
                            } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   220
                                var s_sum = splitter_dim * i;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   221
                                var props = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   222
                                if (settings.percent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   223
                                    props[dim_name] = (dim_px - pw - sw_sum) / dim_px * 100 + '%';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   224
                                    props[pos_name] = (pw + sw_sum) / dim_px * 100 + '%';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   225
                                } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   226
                                    props[dim_name] = dim_px - pw - sw_sum;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   227
                                    props[pos_name] = pw + sw_sum;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   228
                                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   229
                                panel_last.css(props);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   230
                            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   231
                            self.css('visiblity', '');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   232
                        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   233
                        if (!silent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   234
                            self.trigger('splitter.resize');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   235
                            self.find('.splitter_panel').trigger('splitter.resize');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   236
                        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   237
                        return self;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   238
                    };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   239
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   240
                if (settings.orientation == 'vertical') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   241
                    return make_sizer('width', 'left');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   242
                } else if (settings.orientation == 'horizontal') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   243
                    return make_sizer('height', 'top');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   244
                } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   245
                    return $.noop;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   246
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   247
            })(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   248
            _splitters: $splitters,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   249
            _panels: panels,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   250
            orientation: settings.orientation,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   251
            limit: set_limit(settings.limit),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   252
            isActive: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   253
                return splitter_id === id;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   254
            },
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   255
            destroy: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   256
                self.removeClass('splitter_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   257
                if (settings.orientation == 'vertical') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   258
                    panel_1.removeClass('left_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   259
                    panel_2.removeClass('right_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   260
                } else if (settings.orientation == 'horizontal') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   261
                    panel_1.removeClass('top_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   262
                    panel_2.removeClass('bottom_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   263
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   264
                self.off('splitter.resize');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   265
                self.trigger('splitter.resize');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   266
                self.find('.splitter_panel').trigger('splitter.resize');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   267
                splitters[id] = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   268
                count--;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   269
                $splitters.each(function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   270
                    var splitter = $(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   271
                    splitter.off('mouseenter');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   272
                    splitter.off('mouseleave');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   273
                    splitter.off('touchstart');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   274
                    splitter.off('touchmove');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   275
                    splitter.off('touchend');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   276
                    splitter.off('touchleave');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   277
                    splitter.off('touchcancel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   278
                    splitter.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   279
                });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   280
                self.removeData('splitter');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   281
                var not_null = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   282
                for (var i=splitters.length; i--;) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   283
                    if (splitters[i] !== null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   284
                        not_null = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   285
                        break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   286
                    }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   287
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   288
                //remove document events when no splitters
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   289
                if (!not_null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   290
                    $(document.documentElement).off('.splitter');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   291
                    $(window).off('resize.splitter');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   292
                    splitters = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   293
                    count = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   294
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   295
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   296
        });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   297
        self.on('splitter.resize', function(e) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   298
            var pos = self.position();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   299
            if (self.orientation == 'vertical' &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   300
                pos > self.width()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   301
                pos = self.width() - self.limit.rightBottom-1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   302
            } else if (self.orientation == 'horizontal' &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   303
                       pos > self.height()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   304
                pos = self.height() - self.limit.rightBottom-1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   305
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   306
            if (pos < self.limit.leftUpper) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   307
                pos = self.limit.leftUpper + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   308
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   309
            e.stopPropagation();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   310
            self.position(pos, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   311
        });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   312
        //inital position of splitter
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   313
        var pos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   314
        if (settings.orientation == 'vertical') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   315
            if (pos > width-settings.limit.rightBottom) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   316
                pos = width-settings.limit.rightBottom;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   317
            } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   318
                pos = get_position(settings.position);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   319
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   320
        } else if (settings.orientation == 'horizontal') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   321
            //position = height/2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   322
            if (pos > height-settings.limit.rightBottom) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   323
                pos = height-settings.limit.rightBottom;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   324
            } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   325
                pos = get_position(settings.position);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   326
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   327
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   328
        if (pos < settings.limit.leftUpper) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   329
            pos = settings.limit.leftUpper;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   330
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   331
        if (panels.length > 2 && !(pos instanceof Array && pos.length == $splitters.length)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   332
            throw new Error('position need to be array equal to $splitters length');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   333
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   334
        self.position(pos, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   335
        var parent = this.closest('.splitter_panel');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   336
        if (parent.length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   337
            this.height(parent.height());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   338
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   339
        function calc_pos(pos, x) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   340
            var new_pos = pos.slice(0, current_splitter.index);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   341
            var p;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   342
            if (new_pos.length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   343
                p = x - new_pos.reduce(function(a, b) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   344
                    return a + b;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   345
                });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   346
            } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   347
                p = x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   348
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   349
            var diff = pos[current_splitter.index] - p;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   350
            new_pos.push(p);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   351
            if (current_splitter.index < pos.length - 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   352
                var rest = pos.slice(current_splitter.index + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   353
                rest[0] += diff;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   354
                new_pos = new_pos.concat(rest);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   355
            }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   356
            return new_pos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   357
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   358
        // ------------------------------------------------------------------------------------
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   359
        // bind events to document if no splitters
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   360
        if (splitters.filter(Boolean).length === 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   361
            $(window).on('resize.splitter', function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   362
                $.each(splitters, function(i, splitter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   363
                    if (splitter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   364
                        splitter.refresh();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   365
                    }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   366
                });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   367
            });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   368
            $(document.documentElement).on('mousedown.splitter touchstart.splitter', function(e) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   369
                if (splitter_id !== null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   370
                    e.preventDefault();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   371
                    current_splitter = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   372
                        node: splitters[splitter_id],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   373
                        index: current_splitter_index
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   374
                    };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   375
                    // ignore right click
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   376
                    if (e.originalEvent.button !== 2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   377
                        setTimeout(function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   378
                            $('<div class="splitterMask"></div>').
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   379
                                css('cursor', current_splitter.node.children().eq(1).css('cursor')).
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   380
                                insertAfter(current_splitter.node);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   381
                        });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   382
                    }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   383
                    current_splitter.node.settings.onDragStart(e);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   384
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   385
            }).on('mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter', function(e) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   386
                if (current_splitter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   387
                    setTimeout(function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   388
                        $('.splitterMask').remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   389
                    });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   390
                    current_splitter.node.settings.onDragEnd(e);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   391
                    current_splitter = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   392
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   393
            }).on('mousemove.splitter touchmove.splitter', function(e) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   394
                var pos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   395
                if (current_splitter !== null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   396
                    var node = current_splitter.node;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   397
                    var leftUpperLimit = node.limit.leftUpper;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   398
                    var rightBottomLimit = node.limit.rightBottom;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   399
                    var offset = node.offset();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   400
                    if (node.orientation == 'vertical') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   401
                        var pageX = e.pageX;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   402
                        if(e.originalEvent && e.originalEvent.changedTouches){
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   403
                          pageX = e.originalEvent.changedTouches[0].pageX;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   404
                        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   405
                        var x = pageX - offset.left;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   406
                        if (x <= node.limit.leftUpper) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   407
                            x = node.limit.leftUpper + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   408
                        } else if (x >= node.width() - rightBottomLimit) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   409
                            x = node.width() - rightBottomLimit - 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   410
                        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   411
                        pos = node.position();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   412
                        if (pos.length > 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   413
                            node.position(calc_pos(pos, x), true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   414
                        } else if (x > node.limit.leftUpper &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   415
                            x < node.width()-rightBottomLimit) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   416
                            node.position(x, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   417
                            node.trigger('splitter.resize');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   418
                            node.find('.splitter_panel').
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   419
                                trigger('splitter.resize');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   420
                            //e.preventDefault();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   421
                        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   422
                    } else if (node.orientation == 'horizontal') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   423
                        var pageY = e.pageY;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   424
                        if(e.originalEvent && e.originalEvent.changedTouches){
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   425
                          pageY = e.originalEvent.changedTouches[0].pageY;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   426
                        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   427
                        var y = pageY-offset.top;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   428
                        if (y <= node.limit.leftUpper) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   429
                            y = node.limit.leftUpper + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   430
                        } else if (y >= node.height() - rightBottomLimit) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   431
                            y = node.height() - rightBottomLimit - 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   432
                        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   433
                        pos = node.position();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   434
                        if (pos.length > 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   435
                            node.position(calc_pos(pos, y), true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   436
                        } else if (y > node.limit.leftUpper &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   437
                            y < node.height()-rightBottomLimit) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   438
                            node.position(y, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   439
                            node.trigger('splitter.resize');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   440
                            node.find('.splitter_panel').
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   441
                                trigger('splitter.resize');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   442
                            //e.preventDefault();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   443
                        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   444
                    }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   445
                    node.settings.onDrag(e);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   446
                }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   447
            });//*/
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   448
        }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   449
        splitters[id] = self;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   450
        self.data('splitter', self);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   451
        return self;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   452
    };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   453
});