{"version":3,"sources":["jsdelivr-header.js","/npm/@thi.ng/distance-transform@1.0.39/metric.js","/npm/@thi.ng/distance-transform@1.0.39/transform.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNK,MAAC,EAAe,CACnB,KAAM,CAAC,EAAG,EAAG,KAAQ,EAAI,IAAM,EAAI,GAAK,EAAK,EAC7C,IAAK,CAAC,EAAG,EAAG,EAAI,IAAO,KAAK,OAAO,EAAI,EAAI,EAAI,EAAI,EAAK,EAAK,EAAK,IAAO,GAAK,EAAI,MAE9E,EAAY,IACb,EACH,KAAM,KAAK,MAEP,EAAY,CAChB,KAAM,CAAC,EAAG,EAAG,IAAO,KAAK,IAAI,EAAI,GAAK,EACtC,IAAK,CAAC,EAAG,EAAG,EAAI,IAAO,GAAM,EAAK,EAAI,EAAI,IAAW,EAAK,EAAK,EAAI,GAAK,IAAW,KAAK,OAAO,EAAK,EAAK,EAAI,GAAK,IAE9G,EAAY,CAChB,KAAM,CAAC,EAAG,EAAG,IAAO,KAAK,IAAI,KAAK,IAAI,EAAI,GAAI,GAC9C,IAAK,CAAC,EAAG,EAAG,EAAI,IAAO,GAAM,EAAK,KAAK,IAAI,EAAI,EAAI,EAAI,GAAK,GAAK,KAAK,IAAI,EAAI,EAAI,EAAI,GAAK,ICbvF,EAAoB,EACxB,KAAM,EACN,MAAO,EAAO,GACd,QAAS,EAAI,GACb,WACG,OAAM,MAAK,QAAS,EAAW,EAAY,KAC9C,EAAO,GAAI,CAAM,GAAM,GACvB,MAAM,EAAO,IAAI,aAAa,EAAQ,GAChC,EAAI,IAAI,YAAY,EAAQ,GAC5B,EAAI,IAAI,YAAY,GACpB,EAAI,IAAI,YAAY,GACpB,EAAM,WACZ,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,EAAE,GAA+B,IAA1B,EAAK,EAAS,EAAI,GAAY,EAAM,EAC3C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,MAAM,EAAI,EAAI,EAAQ,EACtB,EAAE,GAAwC,IAAnC,EAAK,EAAS,EAAI,EAAK,EAAI,GAAY,KAAK,IAAI,EAAK,EAAI,EAAE,EAAI,IAAU,CACtF,CACI,IAAK,IAAI,EAAI,EAAS,EAAG,KAAM,GAAK,CAClC,MAAM,EAAI,EAAI,EAAI,EACZ,EAAI,EAAE,EAAI,GAChB,EAAI,EAAE,KAAO,EAAE,GAAK,KAAK,IAAI,EAAK,EAAI,GAC5C,CACA,CACE,IAAI,GAAQ,IACZ,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,MAAM,EAAI,EAAI,EACd,IAAI,EAAI,EACR,EAAE,GAAK,EAAE,GAAK,EACd,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,KAAO,GAAK,GAAK,EAAK,EAAE,GAAI,EAAE,GAAI,EAAE,EAAI,EAAE,KAAO,EAAK,EAAE,GAAI,EAAG,EAAE,EAAI,KACnE,IACF,GAAI,EAAI,EACN,EAAI,EACJ,EAAE,GAAK,MACF,CACL,MAAM,EAAI,EAAI,EAAI,EAAE,GAAI,EAAG,EAAE,EAAI,EAAE,IAAK,EAAE,EAAI,IAC1C,EAAI,IACN,IACA,EAAE,GAAK,EACP,EAAE,GAAK,EAEjB,CACA,CACI,IAAK,IAAI,EAAI,EAAO,KAAM,GAAK,CAC7B,IAAI,EAAI,EAAK,EAAI,GAAK,EAAK,EAAK,EAAG,EAAE,GAAI,EAAE,EAAI,EAAE,MACjD,EAAI,IAAS,EAAO,GACpB,IAAM,EAAE,IAAM,GACpB,CACA,CACE,GAAI,EAAY,GAAK,EAAO,KAAM,CAChC,EAAO,EAAY,EACnB,IAAK,IAAI,EAAI,EAAK,OAAQ,KAAM,GAAK,EAAK,IAAM,CACpD,CACE,OAAO,CAAI,S","file":"/npm/@thi.ng/distance-transform@1.0.39/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/@thi.ng/distance-transform@1.0.39/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const EUCLEDIAN_SQ = {\n  dist: (x, i, gi) => (x - i) * (x - i) + gi * gi,\n  sep: (i, u, gi, gu) => Math.floor((u * u - i * i + gu * gu - gi * gi) / (2 * (u - i)))\n};\nconst EUCLEDIAN = {\n  ...EUCLEDIAN_SQ,\n  post: Math.sqrt\n};\nconst MANHATTAN = {\n  dist: (x, i, gi) => Math.abs(x - i) + gi,\n  sep: (i, u, gi, gu) => gu >= gi + u - i ? Infinity : gi > gu + u - i ? -Infinity : Math.floor((gu - gi + u + i) / 2)\n};\nconst CHEBYSHEV = {\n  dist: (x, i, gi) => Math.max(Math.abs(x - i), gi),\n  sep: (i, u, gi, gu) => gi <= gu ? Math.max(i + gu, i + u >> 1) : Math.min(u - gi, i + u >> 1)\n};\nexport {\n  CHEBYSHEV,\n  EUCLEDIAN,\n  EUCLEDIAN_SQ,\n  MANHATTAN\n};\n","import { EUCLEDIAN } from \"./metric.js\";\nconst distanceTransform = ({\n  data: spix,\n  size: [width, height],\n  stride: [sx, sy],\n  offset\n}, { dist, sep, post } = EUCLEDIAN, normalize = 1) => {\n  post = post || ((x) => x);\n  const dest = new Float32Array(width * height);\n  const g = new Uint32Array(width * height);\n  const s = new Uint32Array(width);\n  const t = new Uint32Array(width);\n  const MAX = 4294967295;\n  for (let x = 0; x < width; x++) {\n    g[x] = spix[offset + x * sx] === 0 ? MAX : 0;\n    for (let y = 1; y < height; y++) {\n      const i = y * width + x;\n      g[i] = spix[offset + y * sy + x * sx] === 0 ? Math.min(MAX, 1 + g[i - width]) : 0;\n    }\n    for (let y = height - 1; y-- > 0; ) {\n      const i = x + y * width;\n      const q = g[i + width];\n      q < g[i] && (g[i] = Math.min(MAX, 1 + q));\n    }\n  }\n  let maxD = -Infinity;\n  for (let y = 0; y < height; y++) {\n    const I = y * width;\n    let q = 0;\n    s[0] = t[0] = 0;\n    for (let u = 1; u < width; u++) {\n      while (q >= 0 && dist(t[q], s[q], g[I + s[q]]) > dist(t[q], u, g[I + u]))\n        q--;\n      if (q < 0) {\n        q = 0;\n        s[0] = u;\n      } else {\n        const w = 1 + sep(s[q], u, g[I + s[q]], g[I + u]);\n        if (w < width) {\n          q++;\n          s[q] = u;\n          t[q] = w;\n        }\n      }\n    }\n    for (let u = width; u-- > 0; ) {\n      let d = dest[u + I] = post(dist(u, s[q], g[I + s[q]]));\n      d > maxD && (maxD = d);\n      u === t[q] && q--;\n    }\n  }\n  if (normalize > 0 && maxD > 1e-6) {\n    maxD = normalize / maxD;\n    for (let i = dest.length; i-- > 0; ) dest[i] *= maxD;\n  }\n  return dest;\n};\nexport {\n  distanceTransform\n};\n"]}