xyc
2025-02-21 664db98c9e8595ce4dd636a27f480e3a08b81ff5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
var svgEditorExtension_panning = (function () {
  'use strict';
 
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
 
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
 
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
          args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
 
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
 
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
 
        _next(undefined);
      });
    };
  }
 
  /**
   * ext-panning.js
   *
   * @license MIT
   *
   * @copyright 2013 Luis Aguirre
   *
   */
 
  /*
    This is a very basic SVG-Edit extension to let tablet/mobile devices pan without problem
  */
  var extPanning = {
    name: 'panning',
    init: function () {
      var _init = _asyncToGenerator(
      /*#__PURE__*/
      regeneratorRuntime.mark(function _callee(_ref) {
        var importLocale, strings, svgEditor, svgCanvas, buttons;
        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                importLocale = _ref.importLocale;
                _context.next = 3;
                return importLocale();
 
              case 3:
                strings = _context.sent;
                svgEditor = this;
                svgCanvas = svgEditor.canvas;
                buttons = [{
                  id: 'ext-panning',
                  icon: svgEditor.curConfig.extIconsPath + 'panning.png',
                  type: 'mode',
                  events: {
                    click: function click() {
                      svgCanvas.setMode('ext-panning');
                    }
                  }
                }];
                return _context.abrupt("return", {
                  name: strings.name,
                  svgicons: svgEditor.curConfig.extIconsPath + 'ext-panning.xml',
                  buttons: strings.buttons.map(function (button, i) {
                    return Object.assign(buttons[i], button);
                  }),
                  mouseDown: function mouseDown() {
                    if (svgCanvas.getMode() === 'ext-panning') {
                      svgEditor.setPanning(true);
                      return {
                        started: true
                      };
                    }
                  },
                  mouseUp: function mouseUp() {
                    if (svgCanvas.getMode() === 'ext-panning') {
                      svgEditor.setPanning(false);
                      return {
                        keep: false,
                        element: null
                      };
                    }
                  }
                });
 
              case 8:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));
 
      return function init(_x) {
        return _init.apply(this, arguments);
      };
    }()
  };
 
  return extPanning;
 
}());