{"version":3,"file":"reservedRegionsContext.js","names":[],"sources":["esm/platform/adaptive/reservedRegionsContext.js"],"sourcesContent":["import { createContext, useContext, useMemo } from \"react\";\nconst ReservedRegionsContext = createContext(null);\nfunction useSnapshot(hook) {\n  const snapshot = useContext(ReservedRegionsContext);\n  if (!snapshot) {\n    throw new Error(`One.${hook} must be used inside One.UI.ReservedRegions.Provider`);\n  }\n  return snapshot;\n}\nfunction useRegions(options) {\n  const { regions } = useSnapshot(\"useReservedRegions\");\n  const kind = options?.kind;\n  const includeInactive = options?.includeInactive === true;\n  return useMemo(\n    () => regions.filter(\n      (region) => (!kind || region.kind === kind) && (includeInactive || region.isActive)\n    ),\n    [regions, kind, includeInactive]\n  );\n}\nfunction useReady() {\n  return useSnapshot(\"useReservedRegionsReady\").ready;\n}\nfunction useSegments() {\n  const { bounds, ready, regions } = useSnapshot(\"useWindowSegments\");\n  return useMemo(() => {\n    if (!ready || !bounds || bounds.width <= 0 || bounds.height <= 0) return [];\n    return segmentsFor(bounds, regions);\n  }, [bounds, ready, regions]);\n}\nfunction useSpanning() {\n  return useSegments().length > 1;\n}\nfunction segmentsFor(bounds, regions) {\n  const edgeTolerance = 0.5;\n  let segments = [{ x: 0, y: 0, ...bounds }];\n  for (const region of regions) {\n    if (region.kind !== \"division\" || !region.isActive) continue;\n    const { x, y, width, height } = region.frame;\n    segments = segments.flatMap((segment) => {\n      const right = segment.x + segment.width;\n      const bottom = segment.y + segment.height;\n      if (y <= segment.y + edgeTolerance && y + height >= bottom - edgeTolerance && x > segment.x && x + width < right) {\n        return [\n          { x: segment.x, y: segment.y, width: x - segment.x, height: segment.height },\n          { x: x + width, y: segment.y, width: right - x - width, height: segment.height }\n        ];\n      }\n      if (x <= segment.x + edgeTolerance && x + width >= right - edgeTolerance && y > segment.y && y + height < bottom) {\n        return [\n          { x: segment.x, y: segment.y, width: segment.width, height: y - segment.y },\n          { x: segment.x, y: y + height, width: segment.width, height: bottom - y - height }\n        ];\n      }\n      return [segment];\n    });\n  }\n  return segments.sort((a, b) => a.y - b.y || a.x - b.x);\n}\nexport {\n  ReservedRegionsContext,\n  segmentsFor,\n  useReady,\n  useRegions,\n  useSegments,\n  useSpanning\n};\n//# sourceMappingURL=reservedRegionsContext.js.map\n"],"mappings":";;;AACA,MAAM,yBAAyB,cAAc,IAAI;AACjD,SAAS,YAAY,MAAM;CACzB,MAAM,WAAW,WAAW,sBAAsB;CAClD,IAAI,CAAC,UAAU;EACb,MAAM,IAAI,MAAM,OAAO,KAAK,qDAAqD;CACnF;CACA,OAAO;AACT;AACA,SAAS,WAAW,SAAS;CAC3B,MAAM,EAAE,YAAY,YAAY,oBAAoB;CACpD,MAAM,OAAO,SAAS;CACtB,MAAM,kBAAkB,SAAS,oBAAoB;CACrD,OAAO,cACC,QAAQ,QACX,YAAY,CAAC,QAAQ,OAAO,SAAS,UAAU,mBAAmB,OAAO,SAC5E,GACA;EAAC;EAAS;EAAM;CAAe,CACjC;AACF;AACA,SAAS,WAAW;CAClB,OAAO,YAAY,yBAAyB,CAAC,CAAC;AAChD;AACA,SAAS,cAAc;CACrB,MAAM,EAAE,QAAQ,OAAO,YAAY,YAAY,mBAAmB;CAClE,OAAO,cAAc;EACnB,IAAI,CAAC,SAAS,CAAC,UAAU,OAAO,SAAS,KAAK,OAAO,UAAU,GAAG,OAAO,CAAC;EAC1E,OAAO,YAAY,QAAQ,OAAO;CACpC,GAAG;EAAC;EAAQ;EAAO;CAAO,CAAC;AAC7B;AACA,SAAS,cAAc;CACrB,OAAO,YAAY,CAAC,CAAC,SAAS;AAChC;AACA,SAAS,YAAY,QAAQ,SAAS;CACpC,MAAM,gBAAgB;CACtB,IAAI,WAAW,CAAC;EAAE,GAAG;EAAG,GAAG;EAAG,GAAG;CAAO,CAAC;CACzC,KAAK,MAAM,UAAU,SAAS;EAC5B,IAAI,OAAO,SAAS,cAAc,CAAC,OAAO,UAAU;EACpD,MAAM,EAAE,GAAG,GAAG,OAAO,WAAW,OAAO;EACvC,WAAW,SAAS,SAAS,YAAY;GACvC,MAAM,QAAQ,QAAQ,IAAI,QAAQ;GAClC,MAAM,SAAS,QAAQ,IAAI,QAAQ;GACnC,IAAI,KAAK,QAAQ,IAAI,iBAAiB,IAAI,UAAU,SAAS,iBAAiB,IAAI,QAAQ,KAAK,IAAI,QAAQ,OAAO;IAChH,OAAO,CACL;KAAE,GAAG,QAAQ;KAAG,GAAG,QAAQ;KAAG,OAAO,IAAI,QAAQ;KAAG,QAAQ,QAAQ;IAAO,GAC3E;KAAE,GAAG,IAAI;KAAO,GAAG,QAAQ;KAAG,OAAO,QAAQ,IAAI;KAAO,QAAQ,QAAQ;IAAO,CACjF;GACF;GACA,IAAI,KAAK,QAAQ,IAAI,iBAAiB,IAAI,SAAS,QAAQ,iBAAiB,IAAI,QAAQ,KAAK,IAAI,SAAS,QAAQ;IAChH,OAAO,CACL;KAAE,GAAG,QAAQ;KAAG,GAAG,QAAQ;KAAG,OAAO,QAAQ;KAAO,QAAQ,IAAI,QAAQ;IAAE,GAC1E;KAAE,GAAG,QAAQ;KAAG,GAAG,IAAI;KAAQ,OAAO,QAAQ;KAAO,QAAQ,SAAS,IAAI;IAAO,CACnF;GACF;GACA,OAAO,CAAC,OAAO;EACjB,CAAC;CACH;CACA,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACvD"}