UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

1 lines • 4.3 kB
{"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"}