UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

1 lines 2.72 kB
{"version":3,"file":"ClassRegistry.min.mjs","names":[],"sources":["../../src/ClassRegistry.ts"],"sourcesContent":["import { FabricError } from './util/internals/console';\n\n/*\n * This Map connects the objects type value with their\n * class implementation. It used from any object to understand which are\n * the classes to enlive when requesting a object.type = 'path' for example.\n * Objects uses it for clipPath, Canvas uses it for everything.\n * This is necessary for generic code to run and enlive instances from serialized representation.\n * You can customize which classes get enlived from SVG parsing using this classRegistry.\n * The Registry start empty and gets filled in depending which files you import.\n * If you want to be able to parse arbitrary SVGs or JSON representation of canvases, coming from\n * different sources you will need to import all fabric because you may need all classes.\n */\n\nexport const JSON = 'json';\nexport const SVG = 'svg';\n\nexport class ClassRegistry {\n declare [JSON]: Map<string, any>;\n declare [SVG]: Map<string, any>;\n\n constructor() {\n this[JSON] = new Map();\n this[SVG] = new Map();\n }\n\n has(classType: string): boolean {\n return this[JSON].has(classType);\n }\n\n getClass<T>(classType: string): T {\n const constructor = this[JSON].get(classType);\n if (!constructor) {\n throw new FabricError(`No class registered for ${classType}`);\n }\n return constructor;\n }\n\n setClass(classConstructor: any, classType?: string) {\n if (classType) {\n this[JSON].set(classType, classConstructor);\n } else {\n this[JSON].set(classConstructor.type, classConstructor);\n // legacy\n // @TODO: needs to be removed in fabric 7 or 8\n this[JSON].set(classConstructor.type.toLowerCase(), classConstructor);\n }\n }\n\n getSVGClass(SVGTagName: string): any {\n return this[SVG].get(SVGTagName);\n }\n\n setSVGClass(classConstructor: any, SVGTagName?: string) {\n this[SVG].set(\n SVGTagName ?? classConstructor.type.toLowerCase(),\n classConstructor,\n );\n }\n}\n\nexport const classRegistry = new ClassRegistry();\n"],"mappings":"+DAcA,MAAa,EAAO,OA+CP,EAAgB,IA5C7B,KAAA,CAIE,aAAA,CACE,KAAK,GAAQ,IAAI,IACjB,KAAA,IAAY,IAAI,IAGlB,IAAI,EAAA,CACF,OAAO,KAAK,GAAM,IAAI,EAAA,CAGxB,SAAY,EAAA,CACV,IAAM,EAAc,KAAK,GAAM,IAAI,EAAA,CACnC,GAAA,CAAK,EACH,MAAM,IAAI,EAAY,2BAA2B,IAAA,CAEnD,OAAO,EAGT,SAAS,EAAuB,EAAA,CAC1B,EACF,KAAK,GAAM,IAAI,EAAW,EAAA,EAE1B,KAAK,GAAM,IAAI,EAAiB,KAAM,EAAA,CAGtC,KAAK,GAAM,IAAI,EAAiB,KAAK,aAAA,CAAe,EAAA,EAIxD,YAAY,EAAA,CACV,OAAO,KAAA,IAAU,IAAI,EAAA,CAGvB,YAAY,EAAuB,EAAA,CACjC,KAAA,IAAU,IACR,GAAA,KAAc,EAAiB,KAAK,aAAA,CAApC,EACA,EAAA,GAAA,OAAA,KAAA"}