/* globals jQuery */ 
 | 
/** 
 | 
 * ext-helloworld.js 
 | 
 * 
 | 
 * @license MIT 
 | 
 * 
 | 
 * @copyright 2010 Alexis Deveria 
 | 
 * 
 | 
 */ 
 | 
  
 | 
/** 
 | 
* This is a very basic SVG-Edit extension. It adds a "Hello World" button in 
 | 
*  the left ("mode") panel. Clicking on the button, and then the canvas 
 | 
*  will show the user the point on the canvas that was clicked on. 
 | 
*/ 
 | 
export default { 
 | 
  name: 'helloworld', 
 | 
  async init ({importLocale}) { 
 | 
    // See `/editor/extensions/ext-locale/helloworld/` 
 | 
    const strings = await importLocale(); 
 | 
    const svgEditor = this; 
 | 
    const $ = jQuery; 
 | 
    const svgCanvas = svgEditor.canvas; 
 | 
    return { 
 | 
      name: strings.name, 
 | 
      // For more notes on how to make an icon file, see the source of 
 | 
      // the helloworld-icon.xml 
 | 
      svgicons: svgEditor.curConfig.extIconsPath + 'helloworld-icon.xml', 
 | 
  
 | 
      // Multiple buttons can be added in this array 
 | 
      buttons: [{ 
 | 
        // Must match the icon ID in helloworld-icon.xml 
 | 
        id: 'hello_world', 
 | 
  
 | 
        // Fallback, e.g., for `file:///` access 
 | 
        icon: svgEditor.curConfig.extIconsPath + 'helloworld.png', 
 | 
  
 | 
        // This indicates that the button will be added to the "mode" 
 | 
        // button panel on the left side 
 | 
        type: 'mode', 
 | 
  
 | 
        // Tooltip text 
 | 
        title: strings.buttons[0].title, 
 | 
  
 | 
        // Events 
 | 
        events: { 
 | 
          click () { 
 | 
            // The action taken when the button is clicked on. 
 | 
            // For "mode" buttons, any other button will 
 | 
            // automatically be de-pressed. 
 | 
            svgCanvas.setMode('hello_world'); 
 | 
          } 
 | 
        } 
 | 
      }], 
 | 
      // This is triggered when the main mouse button is pressed down 
 | 
      // on the editor canvas (not the tool panels) 
 | 
      mouseDown () { 
 | 
        // Check the mode on mousedown 
 | 
        if (svgCanvas.getMode() === 'hello_world') { 
 | 
          // The returned object must include "started" with 
 | 
          // a value of true in order for mouseUp to be triggered 
 | 
          return {started: true}; 
 | 
        } 
 | 
      }, 
 | 
  
 | 
      // This is triggered from anywhere, but "started" must have been set 
 | 
      // to true (see above). Note that "opts" is an object with event info 
 | 
      mouseUp (opts) { 
 | 
        // Check the mode on mouseup 
 | 
        if (svgCanvas.getMode() === 'hello_world') { 
 | 
          const zoom = svgCanvas.getZoom(); 
 | 
  
 | 
          // Get the actual coordinate by dividing by the zoom value 
 | 
          const x = opts.mouse_x / zoom; 
 | 
          const y = opts.mouse_y / zoom; 
 | 
  
 | 
          // We do our own formatting 
 | 
          let {text} = strings; 
 | 
          [ 
 | 
            ['x', x], 
 | 
            ['y', y] 
 | 
          ].forEach(([prop, val]) => { 
 | 
            text = text.replace('{' + prop + '}', val); 
 | 
          }); 
 | 
  
 | 
          // Show the text using the custom alert function 
 | 
          $.alert(text); 
 | 
        } 
 | 
      } 
 | 
    }; 
 | 
  } 
 | 
}; 
 |