Source: editor/extensions/ext-http_savefile.js

// TODO: Might add support for "exportImage" custom
//   handler as in "ext-server_opensave.js" (and in savefile.php)

export default {
  name: 'http_savefile',
  init ({$}) {
    const svgEditor = this;
    const {
      canvas: svgCanvas
    } = svgEditor;
    /**
     * Get file name out of SVGEdit document title.
     * @returns {string}
     */
    function getFileNameFromTitle () {
      const title = svgCanvas.getDocumentTitle();
      return title.trim();
    }

    const url = new URL(window.location);
    const params = url.searchParams;
    const id = params.get('id');
    const token = params.get('token');
    if (id) {
      this.loadFromURL(`/api/imageTemplate/${id}/svg?token=${token}`);
    }

    svgEditor.setCustomHandlers({
      save (win, data) {
        const svg = '<?xml version="1.0" encoding="UTF-8"?>\n' + data,
          filename = getFileNameFromTitle();
        if (id) {
          const saveSvgAction = `/api/imageTemplate/${id}`;
          $.ajax(
            {
              url: saveSvgAction,
              type: 'PUT',
              data: {output_svg: svg, filename},
              headers: {Authorization: `Bearer ${token}`}}
          );
        } else {
          const saveSvgAction = '/api/imageTemplate';
          $.ajax(
            {
              url: saveSvgAction,
              type: 'POST',
              data: {output_svg: svg, filename},
              headers: {Authorization: `Bearer ${token}`}}
          );
        }
      }
    });
  }
};