fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 3.4 kB
Source Map (JSON)
{"version":3,"file":"loadSVGFromURL.mjs","sources":["../../../src/parser/loadSVGFromURL.ts"],"sourcesContent":["import { createEmptyResponse } from './parseSVGDocument';\nimport { loadSVGFromString } from './loadSVGFromString';\nimport type { SVGParsingOutput, TSvgReviverCallback } from './typedefs';\nimport type { LoadImageOptions } from '../util/misc/objectEnlive';\nimport { FabricError } from '../util/internals/console';\n\n/**\n * Takes url corresponding to an SVG document, and parses it into a set of fabric objects.\n * Note that SVG is fetched via fetch API, so it needs to conform to SOP (Same Origin Policy)\n * @param {string} url where the SVG is\n * @param {TSvgParsedCallback} callback Invoked when the parsing is done, with null if parsing wasn't possible with the list of svg nodes.\n * {@link TSvgParsedCallback} also receives `allElements` array as the last argument. This is the full list of svg nodes available in the document.\n * You may want to use it if you are trying to regroup the objects as they were originally grouped in the SVG. ( This was the reason why it was added )\n * @param {TSvgReviverCallback} [reviver] Extra callback for further parsing of SVG elements, called after each fabric object has been created.\n * Takes as input the original svg element and the generated `FabricObject` as arguments. Used to inspect extra properties not parsed by fabric,\n * or extra custom manipulation\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin setting to use for external resources\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n */\nexport function loadSVGFromURL(\n url: string,\n reviver?: TSvgReviverCallback,\n options: LoadImageOptions = {},\n): Promise<SVGParsingOutput> {\n return fetch(url.replace(/^\\n\\s*/, '').trim(), {\n signal: options.signal,\n })\n .then((response) => {\n if (!response.ok) {\n throw new FabricError(`HTTP error! status: ${response.status}`);\n }\n return response.text();\n })\n .then((svgText) => {\n return loadSVGFromString(svgText, reviver, options);\n })\n .catch(() => {\n // this is an unhappy path, we dont care about speed\n return createEmptyResponse();\n });\n}\n"],"names":["loadSVGFromURL","url","reviver","options","arguments","length","undefined","fetch","replace","trim","signal","then","response","ok","FabricError","status","text","svgText","loadSVGFromString","catch","createEmptyResponse"],"mappings":";;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,cAAcA,CAC5BC,GAAW,EACXC,OAA6B,EAEF;AAAA,EAAA,IAD3BC,OAAyB,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;AAE9B,EAAA,OAAOG,KAAK,CAACN,GAAG,CAACO,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAACC,IAAI,EAAE,EAAE;IAC7CC,MAAM,EAAEP,OAAO,CAACO;AAClB,GAAC,CAAC,CACCC,IAAI,CAAEC,QAAQ,IAAK;AAClB,IAAA,IAAI,CAACA,QAAQ,CAACC,EAAE,EAAE;MAChB,MAAM,IAAIC,WAAW,CAAC,CAAA,oBAAA,EAAuBF,QAAQ,CAACG,MAAM,EAAE,CAAC;AACjE,IAAA;AACA,IAAA,OAAOH,QAAQ,CAACI,IAAI,EAAE;AACxB,EAAA,CAAC,CAAC,CACDL,IAAI,CAAEM,OAAO,IAAK;AACjB,IAAA,OAAOC,iBAAiB,CAACD,OAAO,EAAEf,OAAO,EAAEC,OAAO,CAAC;AACrD,EAAA,CAAC,CAAC,CACDgB,KAAK,CAAC,MAAM;AACX;IACA,OAAOC,mBAAmB,EAAE;AAC9B,EAAA,CAAC,CAAC;AACN;;;;"}