platform-calendar-seatmap 2.0.1 → 2.0.2
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.
- package/dist/9ff54b1cefde15da74a9.svg +198 -0
- package/dist/components/actionsHandler/ActionsHandler.d.ts +11 -0
- package/dist/components/alignmentGuides/AlignmentGuides.d.ts +6 -0
- package/dist/components/app/App.d.ts +18 -0
- package/dist/components/background/Background.d.ts +7 -0
- package/dist/components/deleteModal/DeleteModal.d.ts +4 -0
- package/dist/components/draggable/Draggable.d.ts +14 -0
- package/dist/components/elementSelector/ElementSelector.d.ts +10 -0
- package/dist/components/elementSelector/dropdown/Dropdown.d.ts +7 -0
- package/dist/components/elementSelector/dropdown/sections/aisles/Aisles.d.ts +7 -0
- package/dist/components/elementSelector/dropdown/sections/info/Info.d.ts +3 -0
- package/dist/components/elementSelector/dropdown/sections/objects/Objects.d.ts +7 -0
- package/dist/components/elementSelector/dropdown/sections/seatEditor/SeatEditor.d.ts +3 -0
- package/dist/components/elementSelector/dropdown/sections/seatingGroup/SeatingGroup.d.ts +7 -0
- package/dist/components/elementSelector/dropdown/sections/settings/Settings.d.ts +3 -0
- package/dist/components/elementSelector/dropdown/sections/standingArea/StandingArea.d.ts +7 -0
- package/dist/components/elementSelector/dropdown/sections/stats/Statistics.d.ts +3 -0
- package/dist/components/elementSelector/dropdown/sections/tables/Tables.d.ts +7 -0
- package/dist/components/elementSelector/dropdown/sections/text/Text.d.ts +7 -0
- package/dist/components/elementTitle/ElementTitle.d.ts +15 -0
- package/dist/components/elementWrapper/ElementWrapper.d.ts +19 -0
- package/dist/components/elements/aisle/Aisle.d.ts +12 -0
- package/dist/components/elements/object/Object.d.ts +7 -0
- package/dist/components/elements/seatingGroup/SeatingGroup.d.ts +7 -0
- package/dist/components/elements/stage/Stage.d.ts +28 -0
- package/dist/components/elements/standingArea/StandingArea.d.ts +7 -0
- package/dist/components/elements/table/Table.d.ts +7 -0
- package/dist/components/elements/table/round/Round.d.ts +20 -0
- package/dist/components/elements/table/square/Square.d.ts +20 -0
- package/dist/components/elements/text/Text.d.ts +7 -0
- package/dist/components/mouseSeatSelector/MouseSeatSelector.d.ts +6 -0
- package/dist/components/numberingSettings/NumberingSettings.d.ts +12 -0
- package/dist/components/onboarding/Onboarding.d.ts +31 -0
- package/dist/components/previewMode/PreviewMode.d.ts +24 -0
- package/dist/components/resizer/Resizer.d.ts +18 -0
- package/dist/components/rotate/Rotate.d.ts +9 -0
- package/dist/components/scene3d/InteractionController3D.d.ts +18 -0
- package/dist/components/scene3d/Scene3D.d.ts +13 -0
- package/dist/components/scene3d/builders/Object3D.d.ts +3 -0
- package/dist/components/scene3d/builders/SeatingGroup3D.d.ts +3 -0
- package/dist/components/scene3d/builders/StandingArea3D.d.ts +3 -0
- package/dist/components/scene3d/builders/Table3D.d.ts +3 -0
- package/dist/components/scene3d/builders/Text3D.d.ts +3 -0
- package/dist/components/scene3d/builders/materials.d.ts +11 -0
- package/dist/components/scene3d/builders/types.d.ts +36 -0
- package/dist/components/sceneContainer/SceneContainer.d.ts +10 -0
- package/dist/components/seat/Seat.d.ts +39 -0
- package/dist/components/seat/seatIcons/index.d.ts +46 -0
- package/dist/components/seatTooltip/SeatTooltip.d.ts +30 -0
- package/dist/helpers/constants/commons.d.ts +10 -0
- package/dist/helpers/constants/numberingStyles.d.ts +55 -0
- package/dist/helpers/constants/seatColors.d.ts +35 -0
- package/dist/helpers/constants/seatMap.d.ts +12 -0
- package/dist/helpers/constants/standingAreaStyles.d.ts +51 -0
- package/dist/helpers/functions/commons.d.ts +9 -0
- package/dist/helpers/functions/export.d.ts +30 -0
- package/dist/helpers/functions/rowLabels.d.ts +7 -0
- package/dist/helpers/functions/seat.d.ts +16 -0
- package/dist/helpers/functions/seatMap.d.ts +38 -0
- package/dist/helpers/functions/seatSelectionUtils.d.ts +33 -0
- package/dist/helpers/functions/seatStatus.d.ts +20 -0
- package/dist/helpers/functions/seatingGroup.d.ts +4 -0
- package/dist/helpers/functions/statistics.d.ts +116 -0
- package/dist/helpers/functions/zoomToFit.d.ts +20 -0
- package/dist/helpers/types/aisle.d.ts +25 -0
- package/dist/helpers/types/commons.d.ts +10 -0
- package/dist/hooks/useCopyPaste.d.ts +1 -0
- package/dist/hooks/useElementWrapperActionHandlers.d.ts +21 -0
- package/dist/hooks/useIsViewOnly.d.ts +2 -0
- package/dist/hooks/useKeyboardSeatNavigation.d.ts +22 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts +1 -0
- package/dist/hooks/useScaleTracker.d.ts +2 -0
- package/dist/hooks/useSmoothZoom.d.ts +18 -0
- package/dist/hooks/useUndoRedo.d.ts +4 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.html +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.LICENSE.txt +66 -0
- package/dist/lib/numberInputWithSlider/NumberInputWithSlider.d.ts +11 -0
- package/dist/store/middleware/historyMiddleware.d.ts +3 -0
- package/dist/store/reducers/actionHandlers/actionCreators.d.ts +3 -0
- package/dist/store/reducers/actionHandlers/actionTypes.d.ts +2 -0
- package/dist/store/reducers/actionHandlers/reducer.d.ts +3 -0
- package/dist/store/reducers/actionHandlers/selectors.d.ts +8 -0
- package/dist/store/reducers/actionHandlers/types.d.ts +20 -0
- package/dist/store/reducers/clipboard/actionCreators.d.ts +6 -0
- package/dist/store/reducers/clipboard/actionTypes.d.ts +3 -0
- package/dist/store/reducers/clipboard/reducer.d.ts +3 -0
- package/dist/store/reducers/clipboard/selectors.d.ts +6 -0
- package/dist/store/reducers/clipboard/types.d.ts +19 -0
- package/dist/store/reducers/elementSelector/actionCreators.d.ts +7 -0
- package/dist/store/reducers/elementSelector/actionTypes.d.ts +5 -0
- package/dist/store/reducers/elementSelector/reducer.d.ts +3 -0
- package/dist/store/reducers/elementSelector/selectors.d.ts +8 -0
- package/dist/store/reducers/elementSelector/types.d.ts +45 -0
- package/dist/store/reducers/history/actionCreators.d.ts +10 -0
- package/dist/store/reducers/history/actionTypes.d.ts +4 -0
- package/dist/store/reducers/history/reducer.d.ts +21 -0
- package/dist/store/reducers/history/selectors.d.ts +5 -0
- package/dist/store/reducers/history/types.d.ts +18 -0
- package/dist/store/reducers/main/actionCreators.d.ts +15 -0
- package/dist/store/reducers/main/actionTypes.d.ts +12 -0
- package/dist/store/reducers/main/reducer.d.ts +3 -0
- package/dist/store/reducers/main/selectors.d.ts +65 -0
- package/dist/store/reducers/main/types.d.ts +89 -0
- package/dist/store/reducers/rootReducer.d.ts +28 -0
- package/dist/store/reducers/seatMap/actionCreators.d.ts +11 -0
- package/dist/store/reducers/seatMap/actionTypes.d.ts +9 -0
- package/dist/store/reducers/seatMap/reducer.d.ts +3 -0
- package/dist/store/reducers/seatMap/selectors.d.ts +474 -0
- package/dist/store/reducers/seatMap/types.d.ts +70 -0
- package/dist/store/store.d.ts +19 -0
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { T_Element_Table, T_Seat, T_Ticket } from 'platform-calendar-helpers';
|
|
2
|
+
import { FC } from 'react';
|
|
3
|
+
import { selectSelectedSeatsObj } from "../../../../store/reducers/seatMap/selectors";
|
|
4
|
+
import { selectTicketByIds } from "../../../../store/reducers/main/selectors";
|
|
5
|
+
import { T_SeatColors } from "../../../../helpers/constants/seatColors";
|
|
6
|
+
type T_Props = {
|
|
7
|
+
table: T_Element_Table;
|
|
8
|
+
selectedSeatsObj: ReturnType<typeof selectSelectedSeatsObj>;
|
|
9
|
+
ticketIds: ReturnType<typeof selectTicketByIds>['ticketIds'];
|
|
10
|
+
ticketsByIds?: {
|
|
11
|
+
[key: number]: T_Ticket;
|
|
12
|
+
};
|
|
13
|
+
isViewOnly: boolean;
|
|
14
|
+
selectSeatForMobile: (seat: T_Seat) => void;
|
|
15
|
+
seatColors: T_SeatColors;
|
|
16
|
+
soldSeatIds: Set<string | number>;
|
|
17
|
+
currencySymbol?: string;
|
|
18
|
+
};
|
|
19
|
+
declare const Round: FC<T_Props>;
|
|
20
|
+
export { Round };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { T_Element_Table, T_Seat, T_Ticket } from 'platform-calendar-helpers';
|
|
2
|
+
import { FC } from 'react';
|
|
3
|
+
import { selectSelectedSeatsObj } from "../../../../store/reducers/seatMap/selectors";
|
|
4
|
+
import { selectTicketByIds } from "../../../../store/reducers/main/selectors";
|
|
5
|
+
import { T_SeatColors } from "../../../../helpers/constants/seatColors";
|
|
6
|
+
type T_Props = {
|
|
7
|
+
table: T_Element_Table;
|
|
8
|
+
selectedSeatsObj: ReturnType<typeof selectSelectedSeatsObj>;
|
|
9
|
+
ticketIds: ReturnType<typeof selectTicketByIds>['ticketIds'];
|
|
10
|
+
ticketsByIds?: {
|
|
11
|
+
[key: number]: T_Ticket;
|
|
12
|
+
};
|
|
13
|
+
isViewOnly: boolean;
|
|
14
|
+
selectSeatForMobile: (seat: T_Seat) => void;
|
|
15
|
+
seatColors: T_SeatColors;
|
|
16
|
+
soldSeatIds: Set<string | number>;
|
|
17
|
+
currencySymbol?: string;
|
|
18
|
+
};
|
|
19
|
+
declare const Square: FC<T_Props>;
|
|
20
|
+
export { Square };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NUMBERING SETTINGS COMPONENT
|
|
3
|
+
* Configure row and seat numbering styles
|
|
4
|
+
*/
|
|
5
|
+
import { FC } from 'react';
|
|
6
|
+
import { T_NumberingConfig } from "../../helpers/constants/numberingStyles";
|
|
7
|
+
type T_Props = {
|
|
8
|
+
config: Partial<T_NumberingConfig>;
|
|
9
|
+
onChange: (config: Partial<T_NumberingConfig>) => void;
|
|
10
|
+
};
|
|
11
|
+
declare const NumberingSettings: FC<T_Props>;
|
|
12
|
+
export { NumberingSettings };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ONBOARDING TOOLTIPS
|
|
3
|
+
* First-time editor guidance with dismissible tooltips
|
|
4
|
+
*/
|
|
5
|
+
import { FC } from 'react';
|
|
6
|
+
interface OnboardingStep {
|
|
7
|
+
id: string;
|
|
8
|
+
target: string;
|
|
9
|
+
title: string;
|
|
10
|
+
description: string;
|
|
11
|
+
position: 'top' | 'bottom' | 'left' | 'right' | 'center';
|
|
12
|
+
spotlightPadding?: number;
|
|
13
|
+
/** If true, skip this step if target element doesn't exist */
|
|
14
|
+
skipIfMissing?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Custom event to show onboarding again without page reload (e.g. from "Take the tour again" button) */
|
|
17
|
+
export declare const SHOW_ONBOARDING_EVENT = "seatmap-show-onboarding";
|
|
18
|
+
type T_Props = {
|
|
19
|
+
/** Force show onboarding even if previously completed */
|
|
20
|
+
forceShow?: boolean;
|
|
21
|
+
/** Callback when onboarding is completed or skipped */
|
|
22
|
+
onComplete?: () => void;
|
|
23
|
+
/** Custom steps (overrides default) */
|
|
24
|
+
steps?: OnboardingStep[];
|
|
25
|
+
};
|
|
26
|
+
declare const Onboarding: FC<T_Props>;
|
|
27
|
+
/**
|
|
28
|
+
* Hook to reset onboarding (useful for testing or settings)
|
|
29
|
+
*/
|
|
30
|
+
export declare const useResetOnboarding: () => () => void;
|
|
31
|
+
export { Onboarding, type OnboardingStep };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PREVIEW MODE POLISH
|
|
3
|
+
* Applies cleaner styling when in preview mode:
|
|
4
|
+
* - Hides editor chrome (resize handles, element titles if desired)
|
|
5
|
+
* - Cleaner background
|
|
6
|
+
* - Higher contrast for seats
|
|
7
|
+
*/
|
|
8
|
+
import { FC } from 'react';
|
|
9
|
+
type T_Props = {
|
|
10
|
+
/** Hide element titles in preview mode */
|
|
11
|
+
hideElementTitles?: boolean;
|
|
12
|
+
/** Hide resize handles in preview mode */
|
|
13
|
+
hideResizeHandles?: boolean;
|
|
14
|
+
/** Apply high-contrast seat styling */
|
|
15
|
+
highContrastSeats?: boolean;
|
|
16
|
+
/** Clean background (remove patterns) */
|
|
17
|
+
cleanBackground?: boolean;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* PreviewMode Component
|
|
21
|
+
* Injects CSS classes onto the document body when preview mode is active
|
|
22
|
+
*/
|
|
23
|
+
declare const PreviewMode: FC<T_Props>;
|
|
24
|
+
export { PreviewMode };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FC, RefObject } from 'react';
|
|
2
|
+
import { T_Element } from 'platform-calendar-helpers';
|
|
3
|
+
type T_UpdatedSizes = {
|
|
4
|
+
top: number;
|
|
5
|
+
left: number;
|
|
6
|
+
height: number;
|
|
7
|
+
width: number;
|
|
8
|
+
};
|
|
9
|
+
type T_Props = {
|
|
10
|
+
resizeContainer: RefObject<HTMLElement>;
|
|
11
|
+
positionAdjustContainer: RefObject<HTMLElement>;
|
|
12
|
+
elementPosition: T_Element['position'];
|
|
13
|
+
elementheight: number;
|
|
14
|
+
elementWidth: number;
|
|
15
|
+
onResizeEnd: (updatedSizes: T_UpdatedSizes) => void;
|
|
16
|
+
};
|
|
17
|
+
declare const Resizer: FC<T_Props>;
|
|
18
|
+
export { Resizer };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FC, MutableRefObject, PropsWithChildren } from 'react';
|
|
2
|
+
type T_Props = {
|
|
3
|
+
rotateContainer: MutableRefObject<HTMLElement | null>;
|
|
4
|
+
onRotateEnd: (angle: number) => void;
|
|
5
|
+
initialAngle?: number;
|
|
6
|
+
dataHook?: string;
|
|
7
|
+
};
|
|
8
|
+
declare const Rotate: FC<PropsWithChildren<T_Props>>;
|
|
9
|
+
export { Rotate };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { Dispatch } from 'redux';
|
|
3
|
+
type T_Deps = {
|
|
4
|
+
dispatch: Dispatch;
|
|
5
|
+
camera: THREE.Camera;
|
|
6
|
+
domElement: HTMLElement;
|
|
7
|
+
root: THREE.Object3D;
|
|
8
|
+
scale: number;
|
|
9
|
+
isViewOnly: boolean;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Hybrid interaction model:
|
|
13
|
+
* - Raycast to meshes to identify element/seat IDs (via userData)
|
|
14
|
+
* - Raycast to ground plane to compute 2D seatmap coordinates (left/top)
|
|
15
|
+
* - Dispatch existing Redux actions (same as 2D)
|
|
16
|
+
*/
|
|
17
|
+
export declare const attachInteractionController3D: (deps: T_Deps) => () => void;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { T_SceneTransform } from "../../helpers/types/commons";
|
|
2
|
+
type T_Scene3DRef = {
|
|
3
|
+
zoomToFit: () => void;
|
|
4
|
+
};
|
|
5
|
+
type T_Props = {
|
|
6
|
+
wrapperRef: React.MutableRefObject<HTMLDivElement>;
|
|
7
|
+
sceneTransform: T_SceneTransform;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* 3D scene container with Three.js renderer, OrbitControls, and mesh builders.
|
|
11
|
+
*/
|
|
12
|
+
declare const Scene3D: import("react").ForwardRefExoticComponent<T_Props & import("react").RefAttributes<T_Scene3DRef>>;
|
|
13
|
+
export { Scene3D, type T_Scene3DRef };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
export declare const makeMat: (color: string | number, opts?: Partial<THREE.MeshStandardMaterialParameters>) => THREE.MeshStandardMaterial;
|
|
3
|
+
export declare const makeTextSprite: (text: string, options?: {
|
|
4
|
+
fontSize?: number;
|
|
5
|
+
paddingX?: number;
|
|
6
|
+
paddingY?: number;
|
|
7
|
+
textColor?: string;
|
|
8
|
+
backgroundColor?: string;
|
|
9
|
+
borderColor?: string;
|
|
10
|
+
borderWidth?: number;
|
|
11
|
+
}) => THREE.Sprite;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { T_ElementType, T_Seat } from 'platform-calendar-helpers';
|
|
3
|
+
export type T_BuildContext = {
|
|
4
|
+
/** 2D px -> world units multiplier */
|
|
5
|
+
scale: number;
|
|
6
|
+
/** Set of sold seat IDs for status-based coloring */
|
|
7
|
+
soldSeatIds: Set<string | number>;
|
|
8
|
+
/** Map of available ticket IDs for checking if seat has assigned ticket */
|
|
9
|
+
ticketIds?: {
|
|
10
|
+
[key: string | number]: boolean;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export type T_BuiltObject = {
|
|
14
|
+
object: THREE.Object3D;
|
|
15
|
+
/**
|
|
16
|
+
* Optional list of selectable meshes (for raycasting). If omitted, caller can traverse `object`.
|
|
17
|
+
*/
|
|
18
|
+
selectables?: THREE.Object3D[];
|
|
19
|
+
};
|
|
20
|
+
export type T_UserDataSeat = {
|
|
21
|
+
kind: 'seat';
|
|
22
|
+
seatId: T_Seat['id'];
|
|
23
|
+
elementId: string;
|
|
24
|
+
elementType: T_ElementType;
|
|
25
|
+
};
|
|
26
|
+
export type T_UserDataElement = {
|
|
27
|
+
kind: 'element';
|
|
28
|
+
elementId: string;
|
|
29
|
+
elementType: T_ElementType;
|
|
30
|
+
};
|
|
31
|
+
export type T_UserDataAny = T_UserDataSeat | T_UserDataElement | {
|
|
32
|
+
kind: 'other';
|
|
33
|
+
};
|
|
34
|
+
export declare const setUserData: (obj: THREE.Object3D, data: T_UserDataAny) => void;
|
|
35
|
+
export declare const isElement: (data: any) => data is T_UserDataElement;
|
|
36
|
+
export declare const isSeat: (data: any) => data is T_UserDataSeat;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { T_SceneTransform } from "../../helpers/types/commons";
|
|
2
|
+
type T_SceneContainerRef = {
|
|
3
|
+
zoomToFit: () => void;
|
|
4
|
+
};
|
|
5
|
+
type T_Props = {
|
|
6
|
+
wrapperRef: React.MutableRefObject<HTMLDivElement>;
|
|
7
|
+
sceneTransform: T_SceneTransform;
|
|
8
|
+
};
|
|
9
|
+
declare const SceneContainer: import("react").ForwardRefExoticComponent<T_Props & import("react").RefAttributes<T_SceneContainerRef>>;
|
|
10
|
+
export { SceneContainer, type T_SceneContainerRef };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { T_Seat, T_Ticket } from 'platform-calendar-helpers';
|
|
2
|
+
import { FC } from 'react';
|
|
3
|
+
import { selectTicketByIds } from "../../store/reducers/main/selectors";
|
|
4
|
+
import { T_SeatColors } from "../../helpers/constants/seatColors";
|
|
5
|
+
type T_Props = {
|
|
6
|
+
seat: T_Seat;
|
|
7
|
+
selected: boolean;
|
|
8
|
+
seatColors: T_SeatColors;
|
|
9
|
+
soldSeatIds: Set<string | number>;
|
|
10
|
+
iconType?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
|
|
11
|
+
absolutePosition?: {
|
|
12
|
+
top?: number;
|
|
13
|
+
left?: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Optional data attributes for hit-testing / selection algorithms.
|
|
17
|
+
* (Used by seating groups to expose row/col coordinates.)
|
|
18
|
+
*/
|
|
19
|
+
dataAttributes?: Record<string, string | number | undefined>;
|
|
20
|
+
ticketIds: ReturnType<typeof selectTicketByIds>['ticketIds'];
|
|
21
|
+
/** Ticket lookup by ID for enhanced tooltip */
|
|
22
|
+
ticketsByIds?: {
|
|
23
|
+
[key: number]: T_Ticket;
|
|
24
|
+
};
|
|
25
|
+
isViewOnly: boolean;
|
|
26
|
+
select: (seat: T_Seat) => void;
|
|
27
|
+
/** Show seat number inside the seat */
|
|
28
|
+
showNumber?: boolean;
|
|
29
|
+
/** Custom seat number to display (defaults to extracting from label or using index) */
|
|
30
|
+
seatNumber?: string | number;
|
|
31
|
+
/** Row label for enhanced tooltip */
|
|
32
|
+
rowLabel?: string;
|
|
33
|
+
/** Section/element name for enhanced tooltip */
|
|
34
|
+
sectionName?: string;
|
|
35
|
+
/** Currency symbol for price display in tooltip */
|
|
36
|
+
currencySymbol?: string;
|
|
37
|
+
};
|
|
38
|
+
declare const Seat: FC<T_Props>;
|
|
39
|
+
export { Seat };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEAT ICON COMPONENTS
|
|
3
|
+
* SVG-based seat icons for different venue types
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
interface IconProps {
|
|
7
|
+
color?: string;
|
|
8
|
+
size?: number;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
type SeatIconComponent = React.FC<IconProps> | null;
|
|
12
|
+
/**
|
|
13
|
+
* Theater Seat - Plush armchair shape for classical venues
|
|
14
|
+
*/
|
|
15
|
+
export declare const TheaterSeatIcon: React.FC<IconProps>;
|
|
16
|
+
/**
|
|
17
|
+
* Stadium Seat - Flip-up plastic seat for sports venues
|
|
18
|
+
*/
|
|
19
|
+
export declare const StadiumSeatIcon: React.FC<IconProps>;
|
|
20
|
+
/**
|
|
21
|
+
* Bench Segment - For churches, bleachers, communal seating
|
|
22
|
+
*/
|
|
23
|
+
export declare const BenchSeatIcon: React.FC<IconProps>;
|
|
24
|
+
/**
|
|
25
|
+
* Bar Stool - For bars, high tables, counter seating
|
|
26
|
+
*/
|
|
27
|
+
export declare const BarStoolIcon: React.FC<IconProps>;
|
|
28
|
+
/**
|
|
29
|
+
* Premium/VIP Seat - Luxury seat with star indicator
|
|
30
|
+
*/
|
|
31
|
+
export declare const PremiumSeatIcon: React.FC<IconProps>;
|
|
32
|
+
/**
|
|
33
|
+
* Accessible Seat - Wheelchair accessible seating
|
|
34
|
+
*/
|
|
35
|
+
export declare const AccessibleSeatIcon: React.FC<IconProps>;
|
|
36
|
+
/**
|
|
37
|
+
* Floor Cushion - For casual/meditation venues
|
|
38
|
+
*/
|
|
39
|
+
export declare const FloorCushionIcon: React.FC<IconProps>;
|
|
40
|
+
/**
|
|
41
|
+
* Booth Seat - Restaurant/club booth seating
|
|
42
|
+
*/
|
|
43
|
+
export declare const BoothSeatIcon: React.FC<IconProps>;
|
|
44
|
+
export declare const SEAT_ICONS: Record<number, SeatIconComponent>;
|
|
45
|
+
export declare const SEAT_ICON_NAMES: Record<number, string>;
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ENHANCED SEAT TOOLTIP
|
|
3
|
+
* Shows comprehensive seat information: row, seat number, price, ticket name, accessible badge, notes
|
|
4
|
+
*/
|
|
5
|
+
import { FC, ReactNode } from 'react';
|
|
6
|
+
import { T_Seat, T_Ticket } from 'platform-calendar-helpers';
|
|
7
|
+
export interface T_SeatTooltipData {
|
|
8
|
+
seat: T_Seat;
|
|
9
|
+
rowLabel?: string;
|
|
10
|
+
seatNumber?: string | number;
|
|
11
|
+
sectionName?: string;
|
|
12
|
+
ticket?: T_Ticket | null;
|
|
13
|
+
price?: number | string;
|
|
14
|
+
isAccessible?: boolean;
|
|
15
|
+
isSold?: boolean;
|
|
16
|
+
isLocked?: boolean;
|
|
17
|
+
customNote?: string;
|
|
18
|
+
currencySymbol?: string;
|
|
19
|
+
}
|
|
20
|
+
type T_Props = {
|
|
21
|
+
data: T_SeatTooltipData;
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Enhanced Seat Tooltip Component
|
|
27
|
+
* Displays rich seat information on hover
|
|
28
|
+
*/
|
|
29
|
+
declare const SeatTooltip: FC<T_Props>;
|
|
30
|
+
export { SeatTooltip };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const ALPHABET: string[];
|
|
2
|
+
declare const CURVE_UPDATED_EVENT_NAME = "CUSTOM_EVENTS/CURVE_UPDATED_EVENT";
|
|
3
|
+
declare const STRETCH_UPDATED_EVENT_NAME = "CUSTOM_EVENTS/STRETCH_UPDATED_EVENT_NAME";
|
|
4
|
+
declare const IS_MOBILE: boolean;
|
|
5
|
+
declare const MODES: {
|
|
6
|
+
readonly edit: "edit";
|
|
7
|
+
readonly view: "view";
|
|
8
|
+
readonly preview: "preview";
|
|
9
|
+
};
|
|
10
|
+
export { ALPHABET, CURVE_UPDATED_EVENT_NAME, STRETCH_UPDATED_EVENT_NAME, MODES, IS_MOBILE };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ROW/SEAT NUMBERING STYLES
|
|
3
|
+
* Configuration options for how rows and seats are labeled
|
|
4
|
+
*/
|
|
5
|
+
export type T_NumberingStyle = 'default' | 'compact' | 'full' | 'letter-number';
|
|
6
|
+
export interface T_NumberingConfig {
|
|
7
|
+
/** Style for row labels */
|
|
8
|
+
rowStyle: T_NumberingStyle;
|
|
9
|
+
/** Style for seat numbers */
|
|
10
|
+
seatStyle: T_NumberingStyle;
|
|
11
|
+
/** Show row labels */
|
|
12
|
+
showRowLabels: boolean;
|
|
13
|
+
/** Show seat numbers on seats */
|
|
14
|
+
showSeatNumbers: boolean;
|
|
15
|
+
/** Starting row number/letter */
|
|
16
|
+
startRow: string | number;
|
|
17
|
+
/** Starting seat number */
|
|
18
|
+
startSeat: number;
|
|
19
|
+
/** Row numbering direction (1,2,3 or A,B,C) */
|
|
20
|
+
rowNumberingType: 'numeric' | 'alphabetic';
|
|
21
|
+
/** Seat numbering direction */
|
|
22
|
+
seatNumberingDirection: 'left-to-right' | 'right-to-left' | 'center-out';
|
|
23
|
+
/** Include row prefix in labels (e.g., "Row A" vs just "A") */
|
|
24
|
+
includeRowPrefix: boolean;
|
|
25
|
+
/** Include seat prefix in labels (e.g., "Seat 1" vs just "1") */
|
|
26
|
+
includeSeatPrefix: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare const DEFAULT_NUMBERING_CONFIG: T_NumberingConfig;
|
|
29
|
+
export declare const NUMBERING_STYLE_OPTIONS: {
|
|
30
|
+
id: string;
|
|
31
|
+
label: string;
|
|
32
|
+
description: string;
|
|
33
|
+
}[];
|
|
34
|
+
export declare const ROW_NUMBERING_TYPES: {
|
|
35
|
+
id: string;
|
|
36
|
+
label: string;
|
|
37
|
+
example: string;
|
|
38
|
+
}[];
|
|
39
|
+
export declare const SEAT_DIRECTION_OPTIONS: {
|
|
40
|
+
id: string;
|
|
41
|
+
label: string;
|
|
42
|
+
description: string;
|
|
43
|
+
}[];
|
|
44
|
+
/**
|
|
45
|
+
* Generate row label based on index and config
|
|
46
|
+
*/
|
|
47
|
+
export declare const generateRowLabel: (rowIndex: number, config: T_NumberingConfig) => string;
|
|
48
|
+
/**
|
|
49
|
+
* Generate seat number based on column index and config
|
|
50
|
+
*/
|
|
51
|
+
export declare const generateSeatNumber: (colIndex: number, totalCols: number, config: T_NumberingConfig) => number | string;
|
|
52
|
+
/**
|
|
53
|
+
* Format seat label based on row and seat
|
|
54
|
+
*/
|
|
55
|
+
export declare const formatSeatLabel: (rowLabel: string, seatNumber: number | string, config: T_NumberingConfig) => string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEAT COLOR SYSTEM
|
|
3
|
+
* Premium, sophisticated color palette for professional venue maps
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_AVAILABLE_COLOR = "#4A9B7F";
|
|
6
|
+
export declare const DEFAULT_LOCKED_COLOR = "#D4915D";
|
|
7
|
+
export declare const DEFAULT_UNASSIGNED_COLOR = "#B8C4CE";
|
|
8
|
+
export declare const DEFAULT_SOLD_COLOR = "#9CA3AF";
|
|
9
|
+
export declare const DEFAULT_SEAT_COLORS: {
|
|
10
|
+
available: string;
|
|
11
|
+
locked: string;
|
|
12
|
+
unassigned: string;
|
|
13
|
+
sold: string;
|
|
14
|
+
};
|
|
15
|
+
export type T_SeatColors = {
|
|
16
|
+
available: string;
|
|
17
|
+
locked: string;
|
|
18
|
+
unassigned: string;
|
|
19
|
+
sold: string;
|
|
20
|
+
};
|
|
21
|
+
export declare const ZONE_COLORS: {
|
|
22
|
+
premium: string;
|
|
23
|
+
standard: string;
|
|
24
|
+
economy: string;
|
|
25
|
+
balcony: string;
|
|
26
|
+
orchestra: string;
|
|
27
|
+
mezzanine: string;
|
|
28
|
+
box: string;
|
|
29
|
+
accessible: string;
|
|
30
|
+
};
|
|
31
|
+
export declare const SEAT_SELECTION_COLOR = "#3B82F6";
|
|
32
|
+
export declare const SEAT_SELECTION_GLOW = "rgba(59, 130, 246, 0.4)";
|
|
33
|
+
export declare const VIEW_SELECTION_COLOR = "#10B981";
|
|
34
|
+
export declare const VIEW_SELECTION_GLOW = "rgba(16, 185, 129, 0.4)";
|
|
35
|
+
export declare const SEAT_SIZE = 22;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare const ELEMENT_DRAG_STEPS_BY_SCALE: {
|
|
2
|
+
[key: number]: number;
|
|
3
|
+
};
|
|
4
|
+
declare const D_SEAT: {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
ticketId: number;
|
|
8
|
+
locked: boolean;
|
|
9
|
+
hide: boolean;
|
|
10
|
+
};
|
|
11
|
+
declare const CORRECT_SCENE_POSITION_EVENT_NAME = "correct_scene_position_event_name";
|
|
12
|
+
export { ELEMENT_DRAG_STEPS_BY_SCALE, D_SEAT, CORRECT_SCENE_POSITION_EVENT_NAME };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STANDING AREA VISUAL STYLES
|
|
3
|
+
* Premium visual presets and gradient configurations
|
|
4
|
+
*/
|
|
5
|
+
export type T_GradientType = 'solid' | 'linear' | 'radial';
|
|
6
|
+
export type T_GradientConfig = {
|
|
7
|
+
type: T_GradientType;
|
|
8
|
+
color1: string;
|
|
9
|
+
color2?: string;
|
|
10
|
+
angle?: number;
|
|
11
|
+
position?: 'center' | 'top' | 'bottom' | 'left' | 'right';
|
|
12
|
+
};
|
|
13
|
+
export type T_StandingAreaType = 'general' | 'dancefloor' | 'moshpit' | 'vip' | 'bar' | 'lounge';
|
|
14
|
+
export type T_CapacityDisplay = 'none' | 'dots' | 'fill' | 'badge';
|
|
15
|
+
export type T_PatternType = 'none' | 'dots' | 'grid' | 'diagonal' | 'waves';
|
|
16
|
+
export interface T_StandingAreaPreset {
|
|
17
|
+
name: string;
|
|
18
|
+
gradient: T_GradientConfig;
|
|
19
|
+
pattern: T_PatternType;
|
|
20
|
+
borderWidth: number;
|
|
21
|
+
borderColor: string;
|
|
22
|
+
borderStyle: 'solid' | 'dashed' | 'dotted';
|
|
23
|
+
shadowEnabled: boolean;
|
|
24
|
+
capacityDisplay: T_CapacityDisplay;
|
|
25
|
+
}
|
|
26
|
+
export declare const STANDING_AREA_PRESETS: Record<T_StandingAreaType, T_StandingAreaPreset>;
|
|
27
|
+
/**
|
|
28
|
+
* Generate CSS background from gradient config
|
|
29
|
+
*/
|
|
30
|
+
export declare const generateGradientCSS: (gradient: T_GradientConfig) => string;
|
|
31
|
+
/**
|
|
32
|
+
* Generate pattern CSS overlay
|
|
33
|
+
*/
|
|
34
|
+
export declare const generatePatternCSS: (pattern: T_PatternType, opacity?: number) => string;
|
|
35
|
+
/**
|
|
36
|
+
* Generate pattern background size
|
|
37
|
+
*/
|
|
38
|
+
export declare const getPatternSize: (pattern: T_PatternType) => string;
|
|
39
|
+
export declare const DEFAULT_STANDING_AREA_STYLE: {
|
|
40
|
+
areaType: T_StandingAreaType;
|
|
41
|
+
gradient: {
|
|
42
|
+
type: T_GradientType;
|
|
43
|
+
color1: string;
|
|
44
|
+
};
|
|
45
|
+
pattern: T_PatternType;
|
|
46
|
+
borderWidth: number;
|
|
47
|
+
borderColor: string;
|
|
48
|
+
borderStyle: "solid";
|
|
49
|
+
shadowEnabled: boolean;
|
|
50
|
+
capacityDisplay: T_CapacityDisplay;
|
|
51
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const getElementStyles: (element: HTMLElement) => {
|
|
2
|
+
top: number;
|
|
3
|
+
left: number;
|
|
4
|
+
height: number;
|
|
5
|
+
width: number;
|
|
6
|
+
};
|
|
7
|
+
declare const debounce: (func: any, delay: number) => (...args: any) => void;
|
|
8
|
+
declare const islementCornarRadiusesSame: (element: any) => boolean;
|
|
9
|
+
export { getElementStyles, debounce, islementCornarRadiusesSame };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EXPORT FUNCTIONALITY
|
|
3
|
+
* CSV export for statistics data
|
|
4
|
+
*/
|
|
5
|
+
import { T_SeatMap, T_Ticket } from 'platform-calendar-helpers';
|
|
6
|
+
import { T_SeatIndex } from './statistics';
|
|
7
|
+
import { T_SelectedSeats } from "../../store/reducers/elementSelector/types";
|
|
8
|
+
/** Filters for CSV export (Statistics) */
|
|
9
|
+
export interface T_ExportFilters {
|
|
10
|
+
elementId?: string;
|
|
11
|
+
ticketId?: number;
|
|
12
|
+
}
|
|
13
|
+
export type T_CSVExportRow = Record<string, string | number>;
|
|
14
|
+
/**
|
|
15
|
+
* Build rows for CSV export from sold seats, optionally filtered by element/ticket
|
|
16
|
+
* Only includes seats that belong to the current seatmap
|
|
17
|
+
*/
|
|
18
|
+
export declare const prepareExportData: (seatIndex: T_SeatIndex, soldSeats: T_SelectedSeats[keyof T_SelectedSeats][], tickets: T_Ticket[] | undefined, filters: T_ExportFilters, seatMap: T_SeatMap) => T_CSVExportRow[];
|
|
19
|
+
/**
|
|
20
|
+
* Convert array of row objects to CSV string
|
|
21
|
+
*/
|
|
22
|
+
export declare const convertToCSV: (rows: T_CSVExportRow[]) => string;
|
|
23
|
+
/**
|
|
24
|
+
* Trigger download of a blob
|
|
25
|
+
*/
|
|
26
|
+
export declare const downloadBlob: (blob: Blob, filename: string) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Trigger download of a CSV file
|
|
29
|
+
*/
|
|
30
|
+
export declare const downloadCSV: (csv: string, filename: string) => void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get row letter from row index, matching the same logic used for seat labels
|
|
3
|
+
* Row 0 = A, Row 1 = B, ..., Row 25 = Z, Row 26 = AA, etc.
|
|
4
|
+
* @param rowIndex Zero-based row index
|
|
5
|
+
* @returns Row letter(s) (e.g., "A", "B", "AA")
|
|
6
|
+
*/
|
|
7
|
+
export declare const getRowLetter: (rowIndex: number) => string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seat layout configuration
|
|
3
|
+
* Premium seat sizing for realistic venue appearance
|
|
4
|
+
*/
|
|
5
|
+
declare const SEAT_CONFIG: {
|
|
6
|
+
diameter: number;
|
|
7
|
+
spaceBetweenSeats: number;
|
|
8
|
+
spaceBetweenSeatAndTable: number;
|
|
9
|
+
};
|
|
10
|
+
declare const calculateRoundTable: (seatCount: number) => {
|
|
11
|
+
tableSize: number;
|
|
12
|
+
angleIncrement: number;
|
|
13
|
+
seatRadius: number;
|
|
14
|
+
seatDiameter: number;
|
|
15
|
+
};
|
|
16
|
+
export { calculateRoundTable, SEAT_CONFIG };
|