@seatlayer/core 0.50.2 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/{chunk-GD267BFB.js → chunk-UID7KN44.js} +75 -2
  2. package/dist/chunk-UID7KN44.js.map +1 -0
  3. package/dist/core/seatConfidence.d.cts +1 -1
  4. package/dist/core/seatConfidence.d.ts +1 -1
  5. package/dist/de-YGODYJ3E.js +292 -0
  6. package/dist/de-YGODYJ3E.js.map +1 -0
  7. package/dist/es-VMBTGVFQ.js +292 -0
  8. package/dist/es-VMBTGVFQ.js.map +1 -0
  9. package/dist/fr-SLBE2ULB.js +292 -0
  10. package/dist/fr-SLBE2ULB.js.map +1 -0
  11. package/dist/index.cjs +1606 -64
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.cts +138 -17
  14. package/dist/index.d.ts +138 -17
  15. package/dist/index.js +829 -65
  16. package/dist/index.js.map +1 -1
  17. package/dist/picker/minimapGeometry.cjs +80 -0
  18. package/dist/picker/minimapGeometry.cjs.map +1 -0
  19. package/dist/picker/minimapGeometry.d.cts +37 -0
  20. package/dist/picker/minimapGeometry.d.ts +37 -0
  21. package/dist/picker/minimapGeometry.js +52 -0
  22. package/dist/picker/minimapGeometry.js.map +1 -0
  23. package/dist/{types-DR54nqKL.d.cts → types-tLOunI-B.d.cts} +131 -1
  24. package/dist/{types-DR54nqKL.d.ts → types-tLOunI-B.d.ts} +131 -1
  25. package/dist/view3d/crossfade/panorama.d.cts +1 -1
  26. package/dist/view3d/crossfade/panorama.d.ts +1 -1
  27. package/dist/view3d/index.cjs +1158 -123
  28. package/dist/view3d/index.cjs.map +1 -1
  29. package/dist/view3d/index.d.cts +20 -12
  30. package/dist/view3d/index.d.ts +20 -12
  31. package/dist/view3d/index.js +1158 -122
  32. package/dist/view3d/index.js.map +1 -1
  33. package/package.json +14 -1
  34. package/dist/chunk-GD267BFB.js.map +0 -1
  35. package/dist/de-ST4H423D.js +0 -56
  36. package/dist/de-ST4H423D.js.map +0 -1
  37. package/dist/es-WEC5NHRT.js +0 -56
  38. package/dist/es-WEC5NHRT.js.map +0 -1
  39. package/dist/fr-SGBFNAQV.js +0 -56
  40. package/dist/fr-SGBFNAQV.js.map +0 -1
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/picker/minimapGeometry.ts
21
+ var minimapGeometry_exports = {};
22
+ __export(minimapGeometry_exports, {
23
+ createMinimapTransform: () => createMinimapTransform,
24
+ minimapPointToWorld: () => minimapPointToWorld,
25
+ minimapViewportPlan: () => minimapViewportPlan,
26
+ worldRectToMinimap: () => worldRectToMinimap
27
+ });
28
+ module.exports = __toCommonJS(minimapGeometry_exports);
29
+ function createMinimapTransform(world, pixelWidth, pixelHeight, dpr, cssPadding = 6) {
30
+ const padding = cssPadding * dpr;
31
+ const scale = Math.min(
32
+ (pixelWidth - padding * 2) / Math.max(1, world.width),
33
+ (pixelHeight - padding * 2) / Math.max(1, world.height)
34
+ );
35
+ return {
36
+ scale,
37
+ offX: (pixelWidth - world.width * scale) / 2 - world.x * scale,
38
+ offY: (pixelHeight - world.height * scale) / 2 - world.y * scale,
39
+ dpr
40
+ };
41
+ }
42
+ function worldRectToMinimap(rect, transform) {
43
+ return {
44
+ x: rect.x * transform.scale + transform.offX,
45
+ y: rect.y * transform.scale + transform.offY,
46
+ width: rect.width * transform.scale,
47
+ height: rect.height * transform.scale
48
+ };
49
+ }
50
+ function minimapViewportPlan(visible, transform, pixelWidth, pixelHeight, strokeInset = 2) {
51
+ const raw = worldRectToMinimap(visible, transform);
52
+ const left = Math.max(strokeInset, raw.x);
53
+ const top = Math.max(strokeInset, raw.y);
54
+ const right = Math.min(pixelWidth - strokeInset, raw.x + raw.width);
55
+ const bottom = Math.min(pixelHeight - strokeInset, raw.y + raw.height);
56
+ return {
57
+ raw,
58
+ clipped: right > left && bottom > top ? { x: left, y: top, width: right - left, height: bottom - top } : null,
59
+ clippedEdges: {
60
+ left: raw.x < strokeInset,
61
+ top: raw.y < strokeInset,
62
+ right: raw.x + raw.width > pixelWidth - strokeInset,
63
+ bottom: raw.y + raw.height > pixelHeight - strokeInset
64
+ }
65
+ };
66
+ }
67
+ function minimapPointToWorld(pixel, transform) {
68
+ return {
69
+ x: (pixel.x - transform.offX) / transform.scale,
70
+ y: (pixel.y - transform.offY) / transform.scale
71
+ };
72
+ }
73
+ // Annotate the CommonJS export names for ESM import in node:
74
+ 0 && (module.exports = {
75
+ createMinimapTransform,
76
+ minimapPointToWorld,
77
+ minimapViewportPlan,
78
+ worldRectToMinimap
79
+ });
80
+ //# sourceMappingURL=minimapGeometry.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/picker/minimapGeometry.ts"],"sourcesContent":["/** Geometry helpers shared by the buyer minimap renderer and its focused tests. */\nexport interface MinimapRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface MinimapTransform {\n scale: number;\n offX: number;\n offY: number;\n dpr: number;\n}\n\nexport interface MinimapViewportPlan {\n /** The camera rectangle under the unchanged full-world transform. */\n raw: MinimapRect;\n /** The visible portion of `raw`; drawing it never loses every edge off-canvas. */\n clipped: MinimapRect | null;\n clippedEdges: { left: boolean; top: boolean; right: boolean; bottom: boolean };\n}\n\nexport function createMinimapTransform(\n world: MinimapRect,\n pixelWidth: number,\n pixelHeight: number,\n dpr: number,\n cssPadding = 6,\n): MinimapTransform {\n const padding = cssPadding * dpr;\n const scale = Math.min(\n (pixelWidth - padding * 2) / Math.max(1, world.width),\n (pixelHeight - padding * 2) / Math.max(1, world.height),\n );\n return {\n scale,\n offX: (pixelWidth - world.width * scale) / 2 - world.x * scale,\n offY: (pixelHeight - world.height * scale) / 2 - world.y * scale,\n dpr,\n };\n}\n\nexport function worldRectToMinimap(rect: MinimapRect, transform: MinimapTransform): MinimapRect {\n return {\n x: rect.x * transform.scale + transform.offX,\n y: rect.y * transform.scale + transform.offY,\n width: rect.width * transform.scale,\n height: rect.height * transform.scale,\n };\n}\n\nexport function minimapViewportPlan(\n visible: MinimapRect,\n transform: MinimapTransform,\n pixelWidth: number,\n pixelHeight: number,\n strokeInset = 2,\n): MinimapViewportPlan {\n const raw = worldRectToMinimap(visible, transform);\n const left = Math.max(strokeInset, raw.x);\n const top = Math.max(strokeInset, raw.y);\n const right = Math.min(pixelWidth - strokeInset, raw.x + raw.width);\n const bottom = Math.min(pixelHeight - strokeInset, raw.y + raw.height);\n return {\n raw,\n clipped: right > left && bottom > top\n ? { x: left, y: top, width: right - left, height: bottom - top }\n : null,\n clippedEdges: {\n left: raw.x < strokeInset,\n top: raw.y < strokeInset,\n right: raw.x + raw.width > pixelWidth - strokeInset,\n bottom: raw.y + raw.height > pixelHeight - strokeInset,\n },\n };\n}\n\nexport function minimapPointToWorld(\n pixel: { x: number; y: number },\n transform: MinimapTransform,\n): { x: number; y: number } {\n return {\n x: (pixel.x - transform.offX) / transform.scale,\n y: (pixel.y - transform.offY) / transform.scale,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBO,SAAS,uBACd,OACA,YACA,aACA,KACA,aAAa,GACK;AAClB,QAAM,UAAU,aAAa;AAC7B,QAAM,QAAQ,KAAK;AAAA,KAChB,aAAa,UAAU,KAAK,KAAK,IAAI,GAAG,MAAM,KAAK;AAAA,KACnD,cAAc,UAAU,KAAK,KAAK,IAAI,GAAG,MAAM,MAAM;AAAA,EACxD;AACA,SAAO;AAAA,IACL;AAAA,IACA,OAAO,aAAa,MAAM,QAAQ,SAAS,IAAI,MAAM,IAAI;AAAA,IACzD,OAAO,cAAc,MAAM,SAAS,SAAS,IAAI,MAAM,IAAI;AAAA,IAC3D;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,MAAmB,WAA0C;AAC9F,SAAO;AAAA,IACL,GAAG,KAAK,IAAI,UAAU,QAAQ,UAAU;AAAA,IACxC,GAAG,KAAK,IAAI,UAAU,QAAQ,UAAU;AAAA,IACxC,OAAO,KAAK,QAAQ,UAAU;AAAA,IAC9B,QAAQ,KAAK,SAAS,UAAU;AAAA,EAClC;AACF;AAEO,SAAS,oBACd,SACA,WACA,YACA,aACA,cAAc,GACO;AACrB,QAAM,MAAM,mBAAmB,SAAS,SAAS;AACjD,QAAM,OAAO,KAAK,IAAI,aAAa,IAAI,CAAC;AACxC,QAAM,MAAM,KAAK,IAAI,aAAa,IAAI,CAAC;AACvC,QAAM,QAAQ,KAAK,IAAI,aAAa,aAAa,IAAI,IAAI,IAAI,KAAK;AAClE,QAAM,SAAS,KAAK,IAAI,cAAc,aAAa,IAAI,IAAI,IAAI,MAAM;AACrE,SAAO;AAAA,IACL;AAAA,IACA,SAAS,QAAQ,QAAQ,SAAS,MAC9B,EAAE,GAAG,MAAM,GAAG,KAAK,OAAO,QAAQ,MAAM,QAAQ,SAAS,IAAI,IAC7D;AAAA,IACJ,cAAc;AAAA,MACZ,MAAM,IAAI,IAAI;AAAA,MACd,KAAK,IAAI,IAAI;AAAA,MACb,OAAO,IAAI,IAAI,IAAI,QAAQ,aAAa;AAAA,MACxC,QAAQ,IAAI,IAAI,IAAI,SAAS,cAAc;AAAA,IAC7C;AAAA,EACF;AACF;AAEO,SAAS,oBACd,OACA,WAC0B;AAC1B,SAAO;AAAA,IACL,IAAI,MAAM,IAAI,UAAU,QAAQ,UAAU;AAAA,IAC1C,IAAI,MAAM,IAAI,UAAU,QAAQ,UAAU;AAAA,EAC5C;AACF;","names":[]}
@@ -0,0 +1,37 @@
1
+ /** Geometry helpers shared by the buyer minimap renderer and its focused tests. */
2
+ interface MinimapRect {
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ interface MinimapTransform {
9
+ scale: number;
10
+ offX: number;
11
+ offY: number;
12
+ dpr: number;
13
+ }
14
+ interface MinimapViewportPlan {
15
+ /** The camera rectangle under the unchanged full-world transform. */
16
+ raw: MinimapRect;
17
+ /** The visible portion of `raw`; drawing it never loses every edge off-canvas. */
18
+ clipped: MinimapRect | null;
19
+ clippedEdges: {
20
+ left: boolean;
21
+ top: boolean;
22
+ right: boolean;
23
+ bottom: boolean;
24
+ };
25
+ }
26
+ declare function createMinimapTransform(world: MinimapRect, pixelWidth: number, pixelHeight: number, dpr: number, cssPadding?: number): MinimapTransform;
27
+ declare function worldRectToMinimap(rect: MinimapRect, transform: MinimapTransform): MinimapRect;
28
+ declare function minimapViewportPlan(visible: MinimapRect, transform: MinimapTransform, pixelWidth: number, pixelHeight: number, strokeInset?: number): MinimapViewportPlan;
29
+ declare function minimapPointToWorld(pixel: {
30
+ x: number;
31
+ y: number;
32
+ }, transform: MinimapTransform): {
33
+ x: number;
34
+ y: number;
35
+ };
36
+
37
+ export { type MinimapRect, type MinimapTransform, type MinimapViewportPlan, createMinimapTransform, minimapPointToWorld, minimapViewportPlan, worldRectToMinimap };
@@ -0,0 +1,37 @@
1
+ /** Geometry helpers shared by the buyer minimap renderer and its focused tests. */
2
+ interface MinimapRect {
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ interface MinimapTransform {
9
+ scale: number;
10
+ offX: number;
11
+ offY: number;
12
+ dpr: number;
13
+ }
14
+ interface MinimapViewportPlan {
15
+ /** The camera rectangle under the unchanged full-world transform. */
16
+ raw: MinimapRect;
17
+ /** The visible portion of `raw`; drawing it never loses every edge off-canvas. */
18
+ clipped: MinimapRect | null;
19
+ clippedEdges: {
20
+ left: boolean;
21
+ top: boolean;
22
+ right: boolean;
23
+ bottom: boolean;
24
+ };
25
+ }
26
+ declare function createMinimapTransform(world: MinimapRect, pixelWidth: number, pixelHeight: number, dpr: number, cssPadding?: number): MinimapTransform;
27
+ declare function worldRectToMinimap(rect: MinimapRect, transform: MinimapTransform): MinimapRect;
28
+ declare function minimapViewportPlan(visible: MinimapRect, transform: MinimapTransform, pixelWidth: number, pixelHeight: number, strokeInset?: number): MinimapViewportPlan;
29
+ declare function minimapPointToWorld(pixel: {
30
+ x: number;
31
+ y: number;
32
+ }, transform: MinimapTransform): {
33
+ x: number;
34
+ y: number;
35
+ };
36
+
37
+ export { type MinimapRect, type MinimapTransform, type MinimapViewportPlan, createMinimapTransform, minimapPointToWorld, minimapViewportPlan, worldRectToMinimap };
@@ -0,0 +1,52 @@
1
+ // src/picker/minimapGeometry.ts
2
+ function createMinimapTransform(world, pixelWidth, pixelHeight, dpr, cssPadding = 6) {
3
+ const padding = cssPadding * dpr;
4
+ const scale = Math.min(
5
+ (pixelWidth - padding * 2) / Math.max(1, world.width),
6
+ (pixelHeight - padding * 2) / Math.max(1, world.height)
7
+ );
8
+ return {
9
+ scale,
10
+ offX: (pixelWidth - world.width * scale) / 2 - world.x * scale,
11
+ offY: (pixelHeight - world.height * scale) / 2 - world.y * scale,
12
+ dpr
13
+ };
14
+ }
15
+ function worldRectToMinimap(rect, transform) {
16
+ return {
17
+ x: rect.x * transform.scale + transform.offX,
18
+ y: rect.y * transform.scale + transform.offY,
19
+ width: rect.width * transform.scale,
20
+ height: rect.height * transform.scale
21
+ };
22
+ }
23
+ function minimapViewportPlan(visible, transform, pixelWidth, pixelHeight, strokeInset = 2) {
24
+ const raw = worldRectToMinimap(visible, transform);
25
+ const left = Math.max(strokeInset, raw.x);
26
+ const top = Math.max(strokeInset, raw.y);
27
+ const right = Math.min(pixelWidth - strokeInset, raw.x + raw.width);
28
+ const bottom = Math.min(pixelHeight - strokeInset, raw.y + raw.height);
29
+ return {
30
+ raw,
31
+ clipped: right > left && bottom > top ? { x: left, y: top, width: right - left, height: bottom - top } : null,
32
+ clippedEdges: {
33
+ left: raw.x < strokeInset,
34
+ top: raw.y < strokeInset,
35
+ right: raw.x + raw.width > pixelWidth - strokeInset,
36
+ bottom: raw.y + raw.height > pixelHeight - strokeInset
37
+ }
38
+ };
39
+ }
40
+ function minimapPointToWorld(pixel, transform) {
41
+ return {
42
+ x: (pixel.x - transform.offX) / transform.scale,
43
+ y: (pixel.y - transform.offY) / transform.scale
44
+ };
45
+ }
46
+ export {
47
+ createMinimapTransform,
48
+ minimapPointToWorld,
49
+ minimapViewportPlan,
50
+ worldRectToMinimap
51
+ };
52
+ //# sourceMappingURL=minimapGeometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/picker/minimapGeometry.ts"],"sourcesContent":["/** Geometry helpers shared by the buyer minimap renderer and its focused tests. */\nexport interface MinimapRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface MinimapTransform {\n scale: number;\n offX: number;\n offY: number;\n dpr: number;\n}\n\nexport interface MinimapViewportPlan {\n /** The camera rectangle under the unchanged full-world transform. */\n raw: MinimapRect;\n /** The visible portion of `raw`; drawing it never loses every edge off-canvas. */\n clipped: MinimapRect | null;\n clippedEdges: { left: boolean; top: boolean; right: boolean; bottom: boolean };\n}\n\nexport function createMinimapTransform(\n world: MinimapRect,\n pixelWidth: number,\n pixelHeight: number,\n dpr: number,\n cssPadding = 6,\n): MinimapTransform {\n const padding = cssPadding * dpr;\n const scale = Math.min(\n (pixelWidth - padding * 2) / Math.max(1, world.width),\n (pixelHeight - padding * 2) / Math.max(1, world.height),\n );\n return {\n scale,\n offX: (pixelWidth - world.width * scale) / 2 - world.x * scale,\n offY: (pixelHeight - world.height * scale) / 2 - world.y * scale,\n dpr,\n };\n}\n\nexport function worldRectToMinimap(rect: MinimapRect, transform: MinimapTransform): MinimapRect {\n return {\n x: rect.x * transform.scale + transform.offX,\n y: rect.y * transform.scale + transform.offY,\n width: rect.width * transform.scale,\n height: rect.height * transform.scale,\n };\n}\n\nexport function minimapViewportPlan(\n visible: MinimapRect,\n transform: MinimapTransform,\n pixelWidth: number,\n pixelHeight: number,\n strokeInset = 2,\n): MinimapViewportPlan {\n const raw = worldRectToMinimap(visible, transform);\n const left = Math.max(strokeInset, raw.x);\n const top = Math.max(strokeInset, raw.y);\n const right = Math.min(pixelWidth - strokeInset, raw.x + raw.width);\n const bottom = Math.min(pixelHeight - strokeInset, raw.y + raw.height);\n return {\n raw,\n clipped: right > left && bottom > top\n ? { x: left, y: top, width: right - left, height: bottom - top }\n : null,\n clippedEdges: {\n left: raw.x < strokeInset,\n top: raw.y < strokeInset,\n right: raw.x + raw.width > pixelWidth - strokeInset,\n bottom: raw.y + raw.height > pixelHeight - strokeInset,\n },\n };\n}\n\nexport function minimapPointToWorld(\n pixel: { x: number; y: number },\n transform: MinimapTransform,\n): { x: number; y: number } {\n return {\n x: (pixel.x - transform.offX) / transform.scale,\n y: (pixel.y - transform.offY) / transform.scale,\n };\n}\n"],"mappings":";AAuBO,SAAS,uBACd,OACA,YACA,aACA,KACA,aAAa,GACK;AAClB,QAAM,UAAU,aAAa;AAC7B,QAAM,QAAQ,KAAK;AAAA,KAChB,aAAa,UAAU,KAAK,KAAK,IAAI,GAAG,MAAM,KAAK;AAAA,KACnD,cAAc,UAAU,KAAK,KAAK,IAAI,GAAG,MAAM,MAAM;AAAA,EACxD;AACA,SAAO;AAAA,IACL;AAAA,IACA,OAAO,aAAa,MAAM,QAAQ,SAAS,IAAI,MAAM,IAAI;AAAA,IACzD,OAAO,cAAc,MAAM,SAAS,SAAS,IAAI,MAAM,IAAI;AAAA,IAC3D;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,MAAmB,WAA0C;AAC9F,SAAO;AAAA,IACL,GAAG,KAAK,IAAI,UAAU,QAAQ,UAAU;AAAA,IACxC,GAAG,KAAK,IAAI,UAAU,QAAQ,UAAU;AAAA,IACxC,OAAO,KAAK,QAAQ,UAAU;AAAA,IAC9B,QAAQ,KAAK,SAAS,UAAU;AAAA,EAClC;AACF;AAEO,SAAS,oBACd,SACA,WACA,YACA,aACA,cAAc,GACO;AACrB,QAAM,MAAM,mBAAmB,SAAS,SAAS;AACjD,QAAM,OAAO,KAAK,IAAI,aAAa,IAAI,CAAC;AACxC,QAAM,MAAM,KAAK,IAAI,aAAa,IAAI,CAAC;AACvC,QAAM,QAAQ,KAAK,IAAI,aAAa,aAAa,IAAI,IAAI,IAAI,KAAK;AAClE,QAAM,SAAS,KAAK,IAAI,cAAc,aAAa,IAAI,IAAI,IAAI,MAAM;AACrE,SAAO;AAAA,IACL;AAAA,IACA,SAAS,QAAQ,QAAQ,SAAS,MAC9B,EAAE,GAAG,MAAM,GAAG,KAAK,OAAO,QAAQ,MAAM,QAAQ,SAAS,IAAI,IAC7D;AAAA,IACJ,cAAc;AAAA,MACZ,MAAM,IAAI,IAAI;AAAA,MACd,KAAK,IAAI,IAAI;AAAA,MACb,OAAO,IAAI,IAAI,IAAI,QAAQ,aAAa;AAAA,MACxC,QAAQ,IAAI,IAAI,IAAI,SAAS,cAAc;AAAA,IAC7C;AAAA,EACF;AACF;AAEO,SAAS,oBACd,OACA,WAC0B;AAC1B,SAAO;AAAA,IACL,IAAI,MAAM,IAAI,UAAU,QAAQ,UAAU;AAAA,IAC1C,IAAI,MAAM,IAAI,UAAU,QAAQ,UAAU;AAAA,EAC5C;AACF;","names":[]}
@@ -56,6 +56,12 @@ interface Category {
56
56
  * a single price (the `price` above).
57
57
  */
58
58
  tiers?: CategoryTier[];
59
+ /**
60
+ * This category's inventory is never sellable (press, camera platforms,
61
+ * kills, promoter allocations). It needs no price to publish, buyers never
62
+ * see it as a ticket type, and holds on its seats are refused server-side.
63
+ */
64
+ notForSale?: boolean;
59
65
  }
60
66
  interface ReferenceCategorySource {
61
67
  assetId: string;
@@ -89,7 +95,35 @@ interface CategoryTier {
89
95
  id: string;
90
96
  name: string;
91
97
  price: number;
98
+ /** ISO-4217 currency observed or confirmed for this option. Events still
99
+ * settle in one currency; an importer must ask for review when observed
100
+ * option currencies disagree instead of silently converting them. */
101
+ currency?: string;
102
+ /** Explicit buyer eligibility/booking meaning. Importers must never infer
103
+ * this from the tier's display name. Only `companion` has an automatic
104
+ * inventory pairing rule; the remaining values surface organizer guidance. */
105
+ restriction?: TicketTierRestriction;
106
+ /** Short organizer-authored guidance shown beside this ticket choice. */
107
+ buyerMessage?: string;
108
+ /** Optional evidence-backed scope. Absent means every seat in the category;
109
+ * present fields are ANDed. Booking labels remain the stable public identity. */
110
+ applicability?: TicketTierApplicability;
111
+ /** Why this option's label, price, currency and scope may be trusted. */
112
+ evidence?: TicketTierEvidence;
113
+ }
114
+ interface TicketTierApplicability {
115
+ /** Exact public booking labels for which this option was observed/approved. */
116
+ seatLabels?: string[];
117
+ /** At least one of these authored accommodations must be present. */
118
+ accessibility?: AccessibilityType[];
92
119
  }
120
+ interface TicketTierEvidence {
121
+ provenance: 'public-host' | 'public-event' | 'user-confirmed';
122
+ /** Buyer-safe evidence description; never a secret URL or credential. */
123
+ sourceDescription: string;
124
+ capturedAt?: string;
125
+ }
126
+ type TicketTierRestriction = 'companion' | 'child' | 'senior' | 'student' | 'membership' | 'custom';
93
127
  /**
94
128
  * Accessibility accommodations a seat can carry. Mirrors the taxonomy real
95
129
  * venues (and seats.io) expose so buyers can filter for exactly what they need
@@ -418,6 +452,15 @@ interface RowObject extends AuthoringObjectState {
418
452
  boundaryBefore: 'start' | 'continuous' | 'break';
419
453
  /** Buyer-facing row name; technical component `label` values never change. */
420
454
  displayLabel: string;
455
+ /**
456
+ * Some imported venue formats author label placement independently on every
457
+ * physical row component (for example, a split row can show its name on
458
+ * both sides of each aisle). When true, the buyer renderer uses each
459
+ * component's own `labelPresentation` instead of collapsing the group to
460
+ * one logical label. Ordinary SeatLayer-authored segmented rows omit this
461
+ * and retain the single logical-row label contract.
462
+ */
463
+ repeatLabelOnComponents?: boolean;
421
464
  displayType?: string;
422
465
  labelPresentation?: LabelPresentation;
423
466
  viewFromSeatUrl?: string;
@@ -865,6 +908,11 @@ interface SectionObject extends AuthoringObjectState {
865
908
  * the same kind as {@link height} and {@link rake}.
866
909
  */
867
910
  surfaceKind?: 'flat' | 'rakedRows';
911
+ /** Evidence for physical 3D values that cannot be read directly from a 2D
912
+ * drawing. Importers mark conservative defaults as inferred; editing any of
913
+ * these properties through Designer/Copilot promotes that property to a
914
+ * reviewed, user-confirmed value without changing the 2D topology. */
915
+ physical3dProvenance?: Partial<Record<'height' | 'rake' | 'surfaceKind', Physical3dEvidence>>;
868
916
  /** Uniform scale about the outline centroid (1 = as drawn). Scales members too. */
869
917
  scale?: number;
870
918
  /** 0–100: reviewed strength last used to bend member rows toward a common fitted arc. */
@@ -1025,6 +1073,10 @@ interface Floor {
1025
1073
  * Range 0–120 m.
1026
1074
  */
1027
1075
  baseHeightM?: number;
1076
+ /** Evidence for the absolute physical deck height. */
1077
+ physical3dProvenance?: {
1078
+ baseHeightM?: Physical3dEvidence;
1079
+ };
1028
1080
  objects: ChartObject[];
1029
1081
  focalPoint: Point;
1030
1082
  /**
@@ -1050,6 +1102,12 @@ interface Floor {
1050
1102
  /** Floor-scoped confidence evidence inherited before the venue default. */
1051
1103
  confidenceEvidence?: SeatConfidenceEvidence;
1052
1104
  }
1105
+ /** Durable publishing-review evidence for an editable physical 3D property. */
1106
+ interface Physical3dEvidence {
1107
+ status: 'inferred' | 'confirmed';
1108
+ source: 'public-2d-topology' | 'user-review';
1109
+ note: string;
1110
+ }
1053
1111
  interface ReferenceCalibration {
1054
1112
  type: 'two-point';
1055
1113
  /** Points in immutable source-image pixels, selected by a human or trusted detector. */
@@ -1253,6 +1311,26 @@ interface ChartReferenceImage {
1253
1311
  /** Server-derived semantic calibration without source-image coordinates. */
1254
1312
  derivedScale?: ReferenceDerivedScale;
1255
1313
  }
1314
+ /**
1315
+ * Durable responsive-layout rule for a venue arranged around a focal object.
1316
+ * Sections are rigid groups: their internal rows/seats never scale or deform;
1317
+ * only each group's anchor moves radially when the focal footprint needs more
1318
+ * room. Importers and authoring tools can rerun the same rule after a pitch,
1319
+ * stage or court changes size, even for very large section counts.
1320
+ */
1321
+ interface RadialClearanceLayoutConstraint {
1322
+ id: string;
1323
+ kind: 'radial-clearance-v1';
1324
+ focalObjectIds: string[];
1325
+ sectionIds: string[];
1326
+ clearance: number;
1327
+ movement: 'rigid-section-groups';
1328
+ /** Last solved proportional expansion, retained as useful audit evidence. */
1329
+ resolvedExpansion: number;
1330
+ /** Focal center used for the last solve, allowing the authored ring to be reconstructed after edits. */
1331
+ resolvedFocalCenter?: Point;
1332
+ }
1333
+ type ChartLayoutConstraint = RadialClearanceLayoutConstraint;
1256
1334
  interface ChartDoc {
1257
1335
  version: 1;
1258
1336
  name: string;
@@ -1270,6 +1348,8 @@ interface ChartDoc {
1270
1348
  * is kept mirroring floor 0 so single-floor readers never branch. */
1271
1349
  floors?: Floor[];
1272
1350
  objects: ChartObject[];
1351
+ /** Re-runnable geometric relationships between focal components and sections. */
1352
+ layoutConstraints?: ChartLayoutConstraint[];
1273
1353
  /**
1274
1354
  * Private floor-plan source used for tracing, calibration, scanning and
1275
1355
  * reference-backed generation. Buyer projections always remove this field.
@@ -1396,6 +1476,15 @@ interface RendererOptions extends RendererCallbacks {
1396
1476
  exportMode?: boolean;
1397
1477
  /** Max seats selectable at once (default 10). */
1398
1478
  maxSelection?: number;
1479
+ /**
1480
+ * Buyer-surface fit refinement: on containers much taller than the venue's
1481
+ * projection (phones in portrait), zoomToFit may zoom past the strict
1482
+ * width-contain by a bounded amount (≤30%) so the venue is not a thin band
1483
+ * in a dark field. The overflow crops equally on both sides and the buyer
1484
+ * pans freely. Off for the designer and export pipeline, which must always
1485
+ * show the complete chart.
1486
+ */
1487
+ portraitFitCrop?: boolean;
1399
1488
  /** Only these statuses are clickable (default ['free']). */
1400
1489
  selectableStatuses?: SeatStatus[];
1401
1490
  /**
@@ -1509,6 +1598,18 @@ interface RenderedFreeTextEvidence {
1509
1598
  };
1510
1599
  hiddenReason?: 'below-minimum-size' | 'outside-viewport' | 'renderer-hidden';
1511
1600
  }
1601
+ interface RenderedRowLabelEvidence {
1602
+ text: string;
1603
+ visible: boolean;
1604
+ renderedFontPx: number;
1605
+ ink: string;
1606
+ screenBox?: {
1607
+ x: number;
1608
+ y: number;
1609
+ width: number;
1610
+ height: number;
1611
+ };
1612
+ }
1512
1613
  interface RenderedGAAreaEvidence {
1513
1614
  areaId: string;
1514
1615
  label: string;
@@ -1569,6 +1670,7 @@ interface RendererQualityEvidence {
1569
1670
  gaAreas: RenderedGAAreaEvidence[];
1570
1671
  hierarchyLabels: RenderedHierarchyLabelEvidence[];
1571
1672
  freeTextLabels: RenderedFreeTextEvidence[];
1673
+ rowLabels: RenderedRowLabelEvidence[];
1572
1674
  }
1573
1675
  interface ISeatmapRenderer {
1574
1676
  /** Replace the chart. Resets selection and statuses, zooms to fit.
@@ -1654,6 +1756,8 @@ interface ISeatmapRenderer {
1654
1756
  */
1655
1757
  flashSection?(sectionId: string, color?: string): void;
1656
1758
  zoomToFit(): void;
1759
+ /** Refit the active section when focused; otherwise frame the current floor/view. */
1760
+ refitCurrentView?(): void;
1657
1761
  /** Zoom in one step about the viewport center, clamped to the usual zoom bounds. */
1658
1762
  zoomIn(): void;
1659
1763
  /** Zoom out one step about the viewport center, clamped to the usual zoom bounds. */
@@ -1719,6 +1823,11 @@ interface ISeatmapRenderer {
1719
1823
  width: number;
1720
1824
  height: number;
1721
1825
  };
1826
+ /** Current rendered (not raw-source) geometry for an interactive overview.
1827
+ * Multi-floor overview transforms are already applied to these coordinates. */
1828
+ getMinimapSnapshot?(): RendererMinimapSnapshot;
1829
+ /** Pan without changing zoom so `point` becomes the viewport centre. */
1830
+ panToWorld?(point: Point): void;
1722
1831
  /**
1723
1832
  * Colorblind-safe mode: category hues switch to an Okabe-Ito palette and
1724
1833
  * booked seats render hollow (a non-color cue), so seat state never relies
@@ -1744,6 +1853,9 @@ interface ISeatmapRenderer {
1744
1853
  /** Render all floors stacked (3D overview) vs the active floor. No-op single-floor. */
1745
1854
  setStacked?(on: boolean): void;
1746
1855
  isStacked?(): boolean;
1856
+ /** Render every floor in its authored 2D coordinates so the buyer can choose a level. */
1857
+ setFloorOverview?(on: boolean): void;
1858
+ isFloorOverview?(): boolean;
1747
1859
  /**
1748
1860
  * Section id whose outline contains a container-relative screen point (or null).
1749
1861
  * Feeds the far-zoom "tap a section to zoom in" flow (Slice 5).
@@ -1775,7 +1887,25 @@ interface ISeatmapRenderer {
1775
1887
  getRenderedQualityEvidence(): RendererQualityEvidence;
1776
1888
  destroy(): void;
1777
1889
  }
1890
+ interface RendererMinimapSection {
1891
+ id: string;
1892
+ label: string;
1893
+ outline: Point[];
1894
+ floorId?: string;
1895
+ state: 'selected' | 'available' | 'inactive';
1896
+ active: boolean;
1897
+ }
1898
+ interface RendererMinimapSeat {
1899
+ x: number;
1900
+ y: number;
1901
+ categoryKey: string;
1902
+ state: 'selected' | 'available' | 'inactive';
1903
+ }
1904
+ interface RendererMinimapSnapshot {
1905
+ sections: RendererMinimapSection[];
1906
+ seats: RendererMinimapSeat[];
1907
+ }
1778
1908
  /** localStorage key the Designer writes and the Picker reads. */
1779
1909
  declare const CHART_STORAGE_KEY = "seatmap.chart";
1780
1910
 
1781
- export { type ReferenceSectionTraceBatchProposal as $, type AccessibilityType as A, type BoothObject as B, type ChartDoc as C, type DecorImageObject as D, type ExpandedSeat as E, type Floor as F, type GAAreaObject as G, LABEL_STYLE_MIN_SIZE as H, type ISeatmapRenderer as I, type LabelPresentation as J, type ReferenceAccessibilitySource as K, type LabelStyle as L, type ReferenceCalibration as M, type ReferenceCategorySource as N, type ObjectEditorState as O, type Point as P, type ReferenceDerivedScale as Q, type ResolvedSeatConfidenceEvidence as R, type SeatOverride as S, type TableObject as T, type ReferenceInventoryExclusionSource as U, type ReferenceInventorySource as V, type ReferenceScanProposal as W, type ReferenceScanRowProposal as X, type ReferenceScanSectionProposal as Y, type ReferenceSeatSeed as Z, type ReferenceSectionTraceBatchInput as _, type RowObject as a, type ReferenceSectionTraceInput as a0, type ReferenceSectionTraceProposal as a1, type RenderedBookableLabelEvidence as a2, type RenderedGAAreaEvidence as a3, type RenderedHierarchyLabelEvidence as a4, type RenderedLabelHiddenReason as a5, SEAT_COMMERCIAL_MARKS as a6, SURROUNDINGS_SHAPE_ROLES as a7, type SeatCommercialMark as a8, type SeatCommercialMeta as a9, type SeatConfidenceCoverage as aa, type SeatConfidenceEvidence as ab, type SeatConfidenceModelLevel as ac, type SeatConfidenceModeledTarget as ad, type SeatConfidenceRealityLevel as ae, type SeatViewCoverage as af, type SectionOutlinePath as ag, type SectionPathSegment as ah, type SelectionLayer as ai, type ShapeLineCap as aj, type ShapeLineEnding as ak, type ShapeLineJoin as al, type ShapeObject as am, type TextAlignment as an, type TextBackground as ao, type TextObject as ap, type ZoneDef as aq, accessibilityMeta as ar, accessibilityRingColor as as, layerOf as at, seatCommercialMeta as au, type SeatViewMetadata as b, type RectTableSide as c, type ChartObject as d, type SectionObject as e, type RectTableSeatCounts as f, type GAInventorySegment as g, type RendererQualityEvidence as h, type RenderedFreeTextEvidence as i, type RendererOptions as j, type SeatStatus as k, type RendererViewMode as l, type LodRung as m, type CategoryTier as n, type SeatCommercialAttributes as o, type RendererCallbacks as p, ACCESSIBILITY_RING_COLOR as q, ACCESSIBILITY_TYPES as r, type AccessibilityMeta as s, type AuthoringObjectState as t, CHART_STORAGE_KEY as u, type Category as v, type ChartReferenceImage as w, type ChartTheme as x, type CubicPath as y, LABEL_STYLE_MAX_SIZE as z };
1911
+ export { type ReferenceScanRowProposal as $, type AccessibilityType as A, type BoothObject as B, type ChartDoc as C, type CubicPath as D, type ExpandedSeat as E, type Floor as F, type GAAreaObject as G, type DecorImageObject as H, type ISeatmapRenderer as I, LABEL_STYLE_MAX_SIZE as J, LABEL_STYLE_MIN_SIZE as K, type LabelStyle as L, type LabelPresentation as M, type Physical3dEvidence as N, type ObjectEditorState as O, type Point as P, type RadialClearanceLayoutConstraint as Q, type ResolvedSeatConfidenceEvidence as R, type SeatOverride as S, type TableObject as T, type ReferenceAccessibilitySource as U, type ReferenceCalibration as V, type ReferenceCategorySource as W, type ReferenceDerivedScale as X, type ReferenceInventoryExclusionSource as Y, type ReferenceInventorySource as Z, type ReferenceScanProposal as _, type RowObject as a, type ReferenceScanSectionProposal as a0, type ReferenceSeatSeed as a1, type ReferenceSectionTraceBatchInput as a2, type ReferenceSectionTraceBatchProposal as a3, type ReferenceSectionTraceInput as a4, type ReferenceSectionTraceProposal as a5, type RenderedBookableLabelEvidence as a6, type RenderedGAAreaEvidence as a7, type RenderedHierarchyLabelEvidence as a8, type RenderedLabelHiddenReason as a9, type ZoneDef as aA, accessibilityMeta as aB, accessibilityRingColor as aC, layerOf as aD, seatCommercialMeta as aE, type RenderedRowLabelEvidence as aa, type RendererMinimapSeat as ab, type RendererMinimapSection as ac, SEAT_COMMERCIAL_MARKS as ad, SURROUNDINGS_SHAPE_ROLES as ae, type SeatCommercialMark as af, type SeatCommercialMeta as ag, type SeatConfidenceCoverage as ah, type SeatConfidenceEvidence as ai, type SeatConfidenceModelLevel as aj, type SeatConfidenceModeledTarget as ak, type SeatConfidenceRealityLevel as al, type SeatViewCoverage as am, type SectionOutlinePath as an, type SectionPathSegment as ao, type SelectionLayer as ap, type ShapeLineCap as aq, type ShapeLineEnding as ar, type ShapeLineJoin as as, type ShapeObject as at, type TextAlignment as au, type TextBackground as av, type TextObject as aw, type TicketTierApplicability as ax, type TicketTierEvidence as ay, type TicketTierRestriction as az, type SeatViewMetadata as b, type RectTableSide as c, type ChartObject as d, type SectionObject as e, type RectTableSeatCounts as f, type GAInventorySegment as g, type RendererQualityEvidence as h, type RenderedFreeTextEvidence as i, type RendererOptions as j, type SeatStatus as k, type RendererViewMode as l, type RendererMinimapSnapshot as m, type LodRung as n, type CategoryTier as o, type SeatCommercialAttributes as p, type RendererCallbacks as q, ACCESSIBILITY_RING_COLOR as r, ACCESSIBILITY_TYPES as s, type AccessibilityMeta as t, type AuthoringObjectState as u, CHART_STORAGE_KEY as v, type Category as w, type ChartLayoutConstraint as x, type ChartReferenceImage as y, type ChartTheme as z };