{"version":3,"file":"FilterBackend.mjs","names":[],"sources":["../../../src/filters/FilterBackend.ts"],"sourcesContent":["import { config } from '../config';\nimport { getEnv } from '../env';\nimport { createCanvasElement } from '../util/misc/dom';\nimport { Canvas2dFilterBackend } from './Canvas2dFilterBackend';\nimport { WebGLFilterBackend } from './WebGLFilterBackend';\n\nexport type FilterBackend = WebGLFilterBackend | Canvas2dFilterBackend;\n\nlet filterBackend: FilterBackend;\n\n/**\n * Verifies if it is possible to initialize webgl or fallback on a canvas2d filtering backend\n */\nexport function initFilterBackend(): FilterBackend {\n  const { WebGLProbe } = getEnv();\n  WebGLProbe.queryWebGL(createCanvasElement());\n  if (config.enableGLFiltering && WebGLProbe.isSupported(config.textureSize)) {\n    return new WebGLFilterBackend({ tileSize: config.textureSize });\n  } else {\n    return new Canvas2dFilterBackend();\n  }\n}\n\n/**\n * Get the current fabricJS filter backend  or initialize one if not available yet\n * @param [strict] pass `true` to create the backend if it wasn't created yet (default behavior),\n * pass `false` to get the backend ref without mutating it\n */\nexport function getFilterBackend(strict = true): FilterBackend {\n  if (!filterBackend && strict) {\n    filterBackend = initFilterBackend();\n  }\n  return filterBackend;\n}\n\nexport function setFilterBackend(backend: FilterBackend) {\n  filterBackend = backend;\n}\n"],"mappings":";;;;;;AAQA,IAAI;;;;AAKJ,SAAgB,oBAAmC;CACjD,MAAM,EAAE,eAAe,QAAQ;AAC/B,YAAW,WAAW,qBAAqB,CAAC;AAC5C,KAAI,OAAO,qBAAqB,WAAW,YAAY,OAAO,YAAY,CACxE,QAAO,IAAI,mBAAmB,EAAE,UAAU,OAAO,aAAa,CAAC;KAE/D,QAAO,IAAI,uBAAuB;;;;;;;AAStC,SAAgB,iBAAiB,SAAS,MAAqB;AAC7D,KAAI,CAAC,iBAAiB,OACpB,iBAAgB,mBAAmB;AAErC,QAAO;;AAGT,SAAgB,iBAAiB,SAAwB;AACvD,iBAAgB"}