@kerusiweb/react 3.0.0 → 3.1.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.
- package/README.md +198 -21
- package/dist/kerusi-seatmap.d.ts.map +1 -1
- package/dist/kerusi-seatmap.js +98 -15
- package/dist/kerusi-seatmap.js.map +1 -1
- package/dist/kerusi-section.d.ts +26 -3
- package/dist/kerusi-section.d.ts.map +1 -1
- package/dist/kerusi-section.js +4 -4
- package/dist/kerusi-section.js.map +1 -1
- package/dist/seat-card.d.ts +36 -0
- package/dist/seat-card.d.ts.map +1 -0
- package/dist/seat-card.js +99 -0
- package/dist/seat-card.js.map +1 -0
- package/dist/types.d.ts +65 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/use-seat-cards.d.ts +55 -0
- package/dist/use-seat-cards.d.ts.map +1 -0
- package/dist/use-seat-cards.js +202 -0
- package/dist/use-seat-cards.js.map +1 -0
- package/dist/use-viewport.d.ts +6 -1
- package/dist/use-viewport.d.ts.map +1 -1
- package/dist/use-viewport.js +6 -3
- package/dist/use-viewport.js.map +1 -1
- package/package.json +2 -2
- package/styles.css +181 -11
package/README.md
CHANGED
|
@@ -69,16 +69,16 @@ export function Booking({ map, state }: { map: KerusiMap; state: KerusiState })
|
|
|
69
69
|
|
|
70
70
|
**Selection**
|
|
71
71
|
|
|
72
|
-
| Prop | Type | Default |
|
|
73
|
-
| -------------------- | ------------------------------- | --------------- |
|
|
74
|
-
| `selection` | `readonly string[]` | — | Selected seat ids. Supplying this makes the component controlled.
|
|
75
|
-
| `defaultSelection` | `readonly string[]` | `[]` | The initial selection when uncontrolled. Ignored if `selection` is set.
|
|
76
|
-
| `onSelectionChange` | `(selection) => void` | — | Fires on every change, controlled or not.
|
|
77
|
-
| `selectableStatuses` | `SeatRenderStatus[]` | `['available']` | Which statuses a seat may be picked in.
|
|
78
|
-
| `companionMode` | `'auto' \| 'independent'` | `'auto'` | `auto` selects a seat's whole companion closure together (§4.6).
|
|
79
|
-
| `maxSelection` | `number` | — | Cap on selected seats. Counts a companion closure as its full size.
|
|
80
|
-
| `seatSelectable` | `(seat: RenderSeat) => boolean` | — | A final say, applied after the status test. **Memoize it** (see below).
|
|
81
|
-
| `interactive` | `boolean` | `true` | `false`
|
|
72
|
+
| Prop | Type | Default | |
|
|
73
|
+
| -------------------- | ------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
74
|
+
| `selection` | `readonly string[]` | — | Selected seat ids. Supplying this makes the component controlled. |
|
|
75
|
+
| `defaultSelection` | `readonly string[]` | `[]` | The initial selection when uncontrolled. Ignored if `selection` is set. |
|
|
76
|
+
| `onSelectionChange` | `(selection) => void` | — | Fires on every change, controlled or not. |
|
|
77
|
+
| `selectableStatuses` | `SeatRenderStatus[]` | `['available']` | Which statuses a seat may be picked in. |
|
|
78
|
+
| `companionMode` | `'auto' \| 'independent'` | `'auto'` | `auto` selects a seat's whole companion closure together (§4.6). |
|
|
79
|
+
| `maxSelection` | `number` | — | Cap on selected seats. Counts a companion closure as its full size. |
|
|
80
|
+
| `seatSelectable` | `(seat: RenderSeat) => boolean` | — | A final say, applied after the status test. **Memoize it** (see below). |
|
|
81
|
+
| `interactive` | `boolean` | `true` | `false` turns selection off. Seats still take clicks, and stay keyboard-reachable, while `onSeatClick` or `renderClickCard` is set. |
|
|
82
82
|
|
|
83
83
|
Controlled and uncontrolled work the way they do for `<input>`: pass
|
|
84
84
|
`selection` + `onSelectionChange` to own it yourself, or pass neither and let
|
|
@@ -139,6 +139,8 @@ error boundary catches it. `collect` never throws.
|
|
|
139
139
|
| `onSeatSelect` / `onSeatDeselect` | `SeatInteraction` | The `RenderSeat`, the resulting selection, and every seat that changed (companions included). |
|
|
140
140
|
| `onSeatDisallowed` | `SeatDisallowed` | `reason` is `booked`, `held`, `blocked`, `not-selectable`, `max-selection` or `companion-unavailable`. |
|
|
141
141
|
| `onSeatFocus` | `RenderSeat` | |
|
|
142
|
+
| `onSeatHover` | `RenderSeat \| null` | The seat under the pointer, then `null` when it leaves. See [Hover and click](#hover-and-click). |
|
|
143
|
+
| `onSeatClick` | `SeatClick` | Every seat activation: `{ seat, selected, source }`. Read-only; fires before the selection callbacks. |
|
|
142
144
|
| `onValidationIssues` | `readonly KerusiViolation[]` | Called whenever the documents change. |
|
|
143
145
|
| `onViewportChange` | `KerusiViewport` | `{ zoom, x, y }`, whenever the zoom or pan changes. Only with `zoomable`. |
|
|
144
146
|
| `onMaximizedChange` | `boolean` | When the map is maximized or restored. Only with `maximizable`. |
|
|
@@ -149,6 +151,7 @@ error boundary catches it. `collect` never throws.
|
|
|
149
151
|
const map = useRef<KerusiSeatmapHandle>(null);
|
|
150
152
|
// map.current.summary -> { seats, total, unpriced }
|
|
151
153
|
// map.current.focusSeat('A12')
|
|
154
|
+
// map.current.openSeatCard('A12') / closeSeatCard() / openSeatCardId
|
|
152
155
|
// map.current.viewport -> { zoom, x, y }
|
|
153
156
|
// map.current.zoomIn() / zoomOut() / resetZoom() / toggleMaximized()
|
|
154
157
|
// map.current.zoomToSection('balcony')
|
|
@@ -477,9 +480,38 @@ ignored.
|
|
|
477
480
|
**Controls.** The zoom buttons (zoom in, zoom out, reset to fit) are real
|
|
478
481
|
`<button>`s with accessible names. At a limit they set `aria-disabled` rather than
|
|
479
482
|
`disabled`, so keyboard focus is not thrown away mid-press. Their names come from
|
|
480
|
-
`controlStrings`, for translation. They
|
|
483
|
+
`controlStrings`, for translation. They are one compact bar (32px buttons, 44px
|
|
484
|
+
on touch screens) coloured from the theme's existing tokens
|
|
481
485
|
(`--kerusi-element-bg`, `--kerusi-element-fg`, `--kerusi-element-muted-fg`,
|
|
482
|
-
`--kerusi-focus-ring`)
|
|
486
|
+
`--kerusi-focus-ring`).
|
|
487
|
+
|
|
488
|
+
To restyle them, set any of these in your own stylesheet; each beats the theme
|
|
489
|
+
colours without `!important`:
|
|
490
|
+
|
|
491
|
+
| Token | Default |
|
|
492
|
+
| ------------------------------ | -------------------------------------------------- |
|
|
493
|
+
| `--kerusi-control-size` | `2rem` (`2.75rem` on touch screens) |
|
|
494
|
+
| `--kerusi-control-icon-size` | `1rem` |
|
|
495
|
+
| `--kerusi-control-icon-stroke` | `1.75` |
|
|
496
|
+
| `--kerusi-control-radius` | `0.5rem` |
|
|
497
|
+
| `--kerusi-control-shadow` | `0 1px 3px rgb(0 0 0 / 0.14)` |
|
|
498
|
+
| `--kerusi-control-bg` | `--kerusi-element-bg` |
|
|
499
|
+
| `--kerusi-control-fg` | `--kerusi-element-fg` |
|
|
500
|
+
| `--kerusi-control-border` | `--kerusi-element-muted-fg` at 40% |
|
|
501
|
+
| `--kerusi-control-hover-bg` | the foreground mixed 10% (18% pressed) into the bg |
|
|
502
|
+
|
|
503
|
+
```css
|
|
504
|
+
.kerusi-seatmap {
|
|
505
|
+
--kerusi-control-size: 2.5rem;
|
|
506
|
+
--kerusi-control-radius: 999px;
|
|
507
|
+
--kerusi-control-bg: #1b1f27;
|
|
508
|
+
--kerusi-control-fg: #fff;
|
|
509
|
+
}
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
The classes `.kerusi-toolbar`, `.kerusi-control` and `.kerusi-control--zoom-in`,
|
|
513
|
+
`--zoom-out`, `--zoom-reset` and `--maximize` are there for anything the tokens
|
|
514
|
+
do not cover.
|
|
483
515
|
|
|
484
516
|
To put the controls somewhere else, turn the built-in ones off
|
|
485
517
|
(`showZoomControls={false}`) and drive the map yourself:
|
|
@@ -513,6 +545,151 @@ canvas's own proportions. It is not a modal dialog: focus is not trapped, and an
|
|
|
513
545
|
`transform` or `filter` would anchor the fixed layout to itself instead of the
|
|
514
546
|
screen.
|
|
515
547
|
|
|
548
|
+
### Hover and click
|
|
549
|
+
|
|
550
|
+
What happens when the pointer **hovers** a seat, and what happens when a seat is **clicked**, are decided separately, and each is optional (D10). Nothing is on by default: a map with none of the props below renders and behaves exactly as it always did.
|
|
551
|
+
|
|
552
|
+
| Hover | Click | How |
|
|
553
|
+
| -------- | -------- | ----------------------------------------------------------------------- |
|
|
554
|
+
| nothing | nothing | The default: no new markup, no new behaviour. |
|
|
555
|
+
| card | nothing | A read-only "who sits where" map: point at a seat to see who booked it. |
|
|
556
|
+
| nothing | card | A booking map: tap a seat to see its price and perks in a card. |
|
|
557
|
+
| card | card | A short tooltip on hover, plus a fuller card with actions on click. |
|
|
558
|
+
| callback | callback | Your own UI: the library only reports the events. |
|
|
559
|
+
|
|
560
|
+
Two layers ship, and each is useful without the other: **events**, which report the seat and nothing more (below), and optional [**seat cards**](#seat-cards), which show a card anchored to the seat.
|
|
561
|
+
|
|
562
|
+
```tsx
|
|
563
|
+
<KerusiSeatmap
|
|
564
|
+
map={map}
|
|
565
|
+
state={state}
|
|
566
|
+
interactive={false}
|
|
567
|
+
onSeatHover={(seat) => setHovered(seat?.id ?? null)} // RenderSeat | null
|
|
568
|
+
onSeatClick={({ seat, selected, source }) => openDetail(seat.id)}
|
|
569
|
+
onSeatFocus={(seat) => setHovered(seat.id)} // the same detail for a seat focused by keyboard
|
|
570
|
+
/>
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
**`onSeatHover(seat: RenderSeat | null)`**
|
|
574
|
+
|
|
575
|
+
- Called with the seat under the pointer when it enters a seat, and with `null` when it leaves the seat or the map. It is not called again while the pointer moves within the same seat.
|
|
576
|
+
- The payload is the `RenderSeat` that `onSeatDisallowed` gets: id, label, row label, section, status, type, price, accessibility and `source.metadata`.
|
|
577
|
+
- **Mouse and pen only.** Touch has no hover, and a tap behaves as it always did.
|
|
578
|
+
- **Not fired while the map is panned or zoomed.** The hovered seat is cleared (`null`) once when a drag, pinch or wheel zoom starts, and hover resumes on the next pointer move after it ends.
|
|
579
|
+
- Fires on a map with `interactive={false}` too, and with a custom `renderSeat`. It works at any zoom and in full screen.
|
|
580
|
+
|
|
581
|
+
**`onSeatClick({ seat, selected, source })`**
|
|
582
|
+
|
|
583
|
+
- Called on **every** activation of **any** seat, whether or not it can be selected: booked, held and blocked seats included. This is the supported way to react to a click on a booked seat, in place of catching `onSeatDisallowed`.
|
|
584
|
+
- `selected` is whether the seat was selected **before** the click. `source` is `'pointer'` (a click or tap) or `'keyboard'` (Enter or Space on a focused seat).
|
|
585
|
+
- It fires before the selection callbacks for the same click, and it is **read-only** (D13): it cannot cancel or change what the click does. `onSeatSelect`, `onSeatDeselect` and `onSeatDisallowed` fire exactly as they do without it.
|
|
586
|
+
- To show details _without_ selecting, turn selection off with props that already exist: `interactive={false}`, `selectableStatuses={[]}` or `seatSelectable`.
|
|
587
|
+
- A tap that turns into a pan is never a click.
|
|
588
|
+
|
|
589
|
+
**`interactive={false}` and clicks (D14).** `false` turns selection off. Seats still take clicks, and stay reachable by Tab and the arrow keys, while `onSeatClick` or `renderClickCard` is set: Enter and Space then activate the click behaviour, with no toggle and no `aria-pressed`. There is no extra prop: setting one of them turns this on, and removing both turns it off again, back to a read-only map's usual markup. A hover card that follows keyboard focus (`hoverCardOnFocus`) makes the seats reachable too.
|
|
590
|
+
|
|
591
|
+
### Seat cards
|
|
592
|
+
|
|
593
|
+
A floating card anchored to a seat: **one card element, two triggers**, and you choose which to use. The library handles positioning, dismissal, zoom, full screen, touch and accessibility. **What a card says is yours** (D10): with neither function set, nothing is rendered and the markup is unchanged.
|
|
594
|
+
|
|
595
|
+
```tsx
|
|
596
|
+
<KerusiSeatmap
|
|
597
|
+
map={map}
|
|
598
|
+
state={state}
|
|
599
|
+
interactive={false}
|
|
600
|
+
// Shown while a seat is hovered. Return null for no card on this seat.
|
|
601
|
+
renderHoverCard={({ seat }) =>
|
|
602
|
+
seat.status === 'booked' ? <span>{bookings[seat.id]?.name}</span> : null
|
|
603
|
+
}
|
|
604
|
+
// Opened on click, tap or Enter. Stays open until dismissed.
|
|
605
|
+
renderClickCard={({ seat, close }) => <BookingDetail id={seat.id} onDone={close} />}
|
|
606
|
+
seatCardPlacement="top" // 'top' | 'bottom' | 'left' | 'right' | 'auto'
|
|
607
|
+
hoverCardDelay={{ open: 150, close: 100 }}
|
|
608
|
+
hoverCardOnFocus // opt in: also show the hover card on keyboard focus
|
|
609
|
+
/>
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
Both functions are handed a `KerusiSeatCardContext`:
|
|
613
|
+
|
|
614
|
+
| Field | Type | |
|
|
615
|
+
| ---------- | ------------------------------- | -------------------------------------------------------------------- |
|
|
616
|
+
| `seat` | `RenderSeat` | Everything the document knows about the seat, already resolved. |
|
|
617
|
+
| `selected` | `boolean` | Whether the seat is in the current selection. |
|
|
618
|
+
| `trigger` | `'hover' \| 'focus' \| 'click'` | What opened the card. `'focus'` only occurs with `hoverCardOnFocus`. |
|
|
619
|
+
| `close` | `() => void` | Closes the card. Most useful for a click card's own buttons. |
|
|
620
|
+
|
|
621
|
+
| Prop | Type | Default | |
|
|
622
|
+
| -------------------- | -------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------- |
|
|
623
|
+
| `renderHoverCard` | `(ctx: KerusiSeatCardContext) => ReactNode` | — | The card shown on hover. Never shown for touch. |
|
|
624
|
+
| `renderClickCard` | `(ctx: KerusiSeatCardContext) => ReactNode` | — | The card opened by a click, a tap or Enter/Space. |
|
|
625
|
+
| `seatCardPlacement` | `'top' \| 'bottom' \| 'left' \| 'right' \| 'auto'` | `'top'` | The side it prefers. It flips when it would overflow the map. |
|
|
626
|
+
| `seatCardClassName` | `string` | — | Extra classes on the card element. |
|
|
627
|
+
| `seatCardAppearance` | `'default' \| 'none'` | `'default'` | `none` drops the library's chrome. |
|
|
628
|
+
| `hoverCardDelay` | `{ open?: number; close?: number }` | `{ open: 150, close: 100 }` | Milliseconds before a hover card opens, and after the pointer leaves it closes. |
|
|
629
|
+
| `hoverCardOnFocus` | `boolean` | `false` | Also show the hover card on keyboard focus (D12). |
|
|
630
|
+
|
|
631
|
+
| | Hover card | Click card |
|
|
632
|
+
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
633
|
+
| **Opens on** | The pointer entering a seat, after `hoverCardDelay.open`. Keyboard focus too, **only** with `hoverCardOnFocus`. | A click, a tap, or Enter/Space on a seat. |
|
|
634
|
+
| **Closes on** | The pointer leaving both the seat and the card (after `hoverCardDelay.close`), focus leaving, `Escape`, or a pan or zoom starting. | `Escape`, a press outside the card and the seats, a second click on the same seat, `close()`, or another seat's click card opening. |
|
|
635
|
+
| **Touch** | Never shown. | Shown: a tap is the trigger. |
|
|
636
|
+
| **The pointer can enter it** | Yes. The close delay lets it travel in to select text or follow a link (WCAG 1.4.13). | Yes. |
|
|
637
|
+
| **ARIA** | `role="tooltip"`, wired to the seat with `aria-describedby`. | A non-modal `role="dialog"` labelled by the seat. Focus moves into it when opened from the keyboard, and returns to the seat on close. |
|
|
638
|
+
| **With both set** | While a seat's click card is open, its hover card is hidden. | |
|
|
639
|
+
|
|
640
|
+
- **A click on a selectable seat toggles it and opens the click card.** Neither the card nor `onSeatClick` can stop the toggle (D13).
|
|
641
|
+
- **Keyboard users and hover cards.** With `hoverCardOnFocus` off (the default), a hover card is pointer-only, so it must not be the only place important information lives. For keyboard parity use `hoverCardOnFocus`, a click card, or `onSeatFocus` beside `onSeatHover`.
|
|
642
|
+
- **Return `null` (or nothing) from a render function** for no card on that seat: show cards for booked seats only, for example.
|
|
643
|
+
- **Positioning.** The card is anchored to the seat's on-screen box and **follows zoom and pan**. It flips to the opposite side when it would overflow the map, and is clamped inside it. It is rendered inside `.kerusi-seatmap`, outside the clipped viewport, so it shows in full screen and inherits the `--kerusi-*` properties set on the map.
|
|
644
|
+
- **Live state.** If the seat's status changes while a card is open, the card re-renders with the new `RenderSeat`. If the seat disappears (a hidden section, say), the card closes.
|
|
645
|
+
- **`Escape`** closes a card before it does anything else: a second `Escape` then clears the selection, or leaves a maximized map.
|
|
646
|
+
|
|
647
|
+
`openSeatCard(seatId)`, `closeSeatCard()` and `openSeatCardId` are on the [`ref`](#the-ref), to open a click card from a search result, say.
|
|
648
|
+
|
|
649
|
+
### Styling seat cards
|
|
650
|
+
|
|
651
|
+
The library's stylesheet sets **structure only** (position, stacking, pointer events, the arrow's geometry), plus a plain default look built entirely from custom properties. The app owns the rest. From the smallest change to the largest:
|
|
652
|
+
|
|
653
|
+
1. **Tokens.** Set any of these on `.kerusi-seatmap` or any ancestor. The library never sets one on its own root, so a value you set always wins (the same precedence as [Theming](#theming)).
|
|
654
|
+
|
|
655
|
+
| Custom property | Default |
|
|
656
|
+
| ------------------------------- | -------------------------------------- |
|
|
657
|
+
| `--kerusi-seat-card-bg` | `--kerusi-element-bg`, else white |
|
|
658
|
+
| `--kerusi-seat-card-fg` | `--kerusi-element-fg`, else near-black |
|
|
659
|
+
| `--kerusi-seat-card-border` | `1px solid rgb(0 0 0 / 0.12)` |
|
|
660
|
+
| `--kerusi-seat-card-radius` | `8px` |
|
|
661
|
+
| `--kerusi-seat-card-shadow` | a soft drop shadow |
|
|
662
|
+
| `--kerusi-seat-card-padding` | `8px 12px` |
|
|
663
|
+
| `--kerusi-seat-card-max-width` | `280px` |
|
|
664
|
+
| `--kerusi-seat-card-font` | `inherit` |
|
|
665
|
+
| `--kerusi-seat-card-offset` | `8px` (the gap between seat and card) |
|
|
666
|
+
| `--kerusi-seat-card-arrow-size` | `6px` (`0` hides the arrow) |
|
|
667
|
+
| `--kerusi-seat-card-z-index` | `10` |
|
|
668
|
+
|
|
669
|
+
`--kerusi-seat-card-offset` and `--kerusi-seat-card-arrow-size` are read as numbers by the placement code, so give them `px`, `rem` or `em`. The card sits inside the map's root, which is itself the stacking context while maximized, so it is always above the map without touching `--kerusi-maximized-z-index`.
|
|
670
|
+
|
|
671
|
+
2. **Class and attribute hooks**, for anything the tokens don't cover: `.kerusi-seat-card`, `.kerusi-seat-card--hover` / `--click`, `.kerusi-seat-card__body`, `.kerusi-seat-card__arrow`; `data-placement="top|bottom|left|right"` (the side actually used, after any flip); and `data-seat-id`, `data-seat-status`, `data-seat-type` and `data-section-id`, mirroring the seat's own attributes. Every library rule has no specificity (it is wrapped in `:where()`), so a single class of yours wins without `!important`.
|
|
672
|
+
|
|
673
|
+
```css
|
|
674
|
+
.kerusi-seat-card[data-seat-status='booked'] {
|
|
675
|
+
--kerusi-seat-card-border: 2px solid #e5707e;
|
|
676
|
+
}
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
3. **Your own classes**, for Tailwind or a design-system class: `seatCardClassName="my-seat-card"`.
|
|
680
|
+
4. **No chrome at all.** `seatCardAppearance="none"` drops the background, border, padding, shadow and arrow, leaving only positioning, so your content _is_ the card.
|
|
681
|
+
5. **The content is your own markup**, styled however your app styles markup. In React it is plain JSX.
|
|
682
|
+
6. **Motion.** A short fade and scale on open, removed under `prefers-reduced-motion: reduce`. Override it with `.kerusi-seat-card { transition: none; animation: none }`.
|
|
683
|
+
|
|
684
|
+
```tsx
|
|
685
|
+
<KerusiSeatmap
|
|
686
|
+
map={map}
|
|
687
|
+
seatCardClassName="rounded-xl shadow-lg"
|
|
688
|
+
seatCardAppearance="none" // your content is the card
|
|
689
|
+
renderClickCard={({ seat }) => <MyCard seat={seat} />}
|
|
690
|
+
/>
|
|
691
|
+
```
|
|
692
|
+
|
|
516
693
|
### Keyboard
|
|
517
694
|
|
|
518
695
|
Tab moves between sections; each section keeps its own tab stop. Within a
|
|
@@ -521,15 +698,15 @@ across an aisle (a `col` no seat occupies) rather than into it. Up and down move
|
|
|
521
698
|
to the next row and pick the seat nearest on the canvas. The arrows follow the
|
|
522
699
|
screen, so they swap along with a mirrored right-to-left map.
|
|
523
700
|
|
|
524
|
-
| Key |
|
|
525
|
-
| ------------------------ |
|
|
526
|
-
| `←` `→` | Previous / next seat in the row
|
|
527
|
-
| `↑` `↓` | Nearest seat in the adjacent row
|
|
528
|
-
| `Home` / `End` | First / last seat of the row
|
|
529
|
-
| `Ctrl+Home` / `Ctrl+End` | First / last seat of the section
|
|
530
|
-
| `PageUp` / `PageDown` | First / last seat of the section
|
|
531
|
-
| `Enter` / `Space` | Toggle
|
|
532
|
-
| `Escape` |
|
|
701
|
+
| Key | |
|
|
702
|
+
| ------------------------ | -------------------------------------- |
|
|
703
|
+
| `←` `→` | Previous / next seat in the row |
|
|
704
|
+
| `↑` `↓` | Nearest seat in the adjacent row |
|
|
705
|
+
| `Home` / `End` | First / last seat of the row |
|
|
706
|
+
| `Ctrl+Home` / `Ctrl+End` | First / last seat of the section |
|
|
707
|
+
| `PageUp` / `PageDown` | First / last seat of the section |
|
|
708
|
+
| `Enter` / `Space` | Toggle, and open a click card |
|
|
709
|
+
| `Escape` | Close a card; else clear the selection |
|
|
533
710
|
|
|
534
711
|
Each seat is a `role="button"` announcing its position, whether it is next to
|
|
535
712
|
an aisle, its type, price and status, every `Seat.accessibility` property and its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kerusi-seatmap.d.ts","sourceRoot":"","sources":["../src/kerusi-seatmap.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kerusi-seatmap.d.ts","sourceRoot":"","sources":["../src/kerusi-seatmap.tsx"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAUpB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,aAAa,oHAstBzB,CAAC"}
|
package/dist/kerusi-seatmap.js
CHANGED
|
@@ -5,6 +5,7 @@ import { KerusiLegend } from './kerusi-legend.js';
|
|
|
5
5
|
import { KerusiSection } from './kerusi-section.js';
|
|
6
6
|
import { useMaximized } from './use-maximized.js';
|
|
7
7
|
import { useRovingFocus } from './use-roving-focus.js';
|
|
8
|
+
import { useSeatCards } from './use-seat-cards.js';
|
|
8
9
|
import { useViewport } from './use-viewport.js';
|
|
9
10
|
const NO_SELECTION = [];
|
|
10
11
|
const DEFAULT_SELECTABLE_STATUSES = ['available'];
|
|
@@ -34,7 +35,7 @@ const NO_OVERRIDES = {};
|
|
|
34
35
|
* `@kerusiweb/core`; this file supplies the listeners and the state.
|
|
35
36
|
*/
|
|
36
37
|
export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
37
|
-
const { map, state, session, selection: controlledSelection, defaultSelection = NO_SELECTION, onSelectionChange, locale, rtl = 'auto', ariaStrings = DEFAULT_SEAT_ARIA_STRINGS, colors, typeColors = true, seatTypeStyles, seatStyle, renderSeat, unitScale = 1, showSectionLabels = true, showLegend = false, showLegendPrices = true, sectionIds, sectionOverrides = NO_OVERRIDES, selectableStatuses = DEFAULT_SELECTABLE_STATUSES, companionMode = 'auto', maxSelection, seatSelectable, interactive = true, expireHolds = false, expiryIntervalMs = 1000, zoomable = false, maxZoom = DEFAULT_MAX_ZOOM, showZoomControls = true, maximizable = false, controlStrings, validate = 'collect', onSeatSelect, onSeatDeselect, onSeatDisallowed, onSeatFocus, onValidationIssues, onViewportChange, onMaximizedChange, className, style, children, } = props;
|
|
38
|
+
const { map, state, session, selection: controlledSelection, defaultSelection = NO_SELECTION, onSelectionChange, locale, rtl = 'auto', ariaStrings = DEFAULT_SEAT_ARIA_STRINGS, colors, typeColors = true, seatTypeStyles, seatStyle, renderSeat, unitScale = 1, showSectionLabels = true, showLegend = false, showLegendPrices = true, sectionIds, sectionOverrides = NO_OVERRIDES, selectableStatuses = DEFAULT_SELECTABLE_STATUSES, companionMode = 'auto', maxSelection, seatSelectable, interactive = true, expireHolds = false, expiryIntervalMs = 1000, zoomable = false, maxZoom = DEFAULT_MAX_ZOOM, showZoomControls = true, maximizable = false, controlStrings, validate = 'collect', onSeatSelect, onSeatDeselect, onSeatDisallowed, onSeatFocus, onSeatHover, onSeatClick, renderHoverCard, renderClickCard, seatCardPlacement = 'top', seatCardClassName, seatCardAppearance = 'default', hoverCardDelay, hoverCardOnFocus = false, onValidationIssues, onViewportChange, onMaximizedChange, className, style, children, } = props;
|
|
38
39
|
// --- selection: controlled or not ---------------------------------------
|
|
39
40
|
const [uncontrolledSelection, setUncontrolledSelection] = useState(defaultSelection);
|
|
40
41
|
const isControlled = controlledSelection !== undefined;
|
|
@@ -118,9 +119,39 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
118
119
|
])), [renderMap, resolvedLocale, ariaStrings]);
|
|
119
120
|
// --- focus and announcements --------------------------------------------
|
|
120
121
|
const { focusedSeatIds, setFocusedSeat, moveFocusTo, focusSeat, getSeatNode, registerSeat } = useRovingFocus(renderMap, zoomable);
|
|
121
|
-
// ---
|
|
122
|
+
// --- seat cards and hover (D10) -------------------------------------------
|
|
122
123
|
const rootRef = useRef(null);
|
|
123
|
-
const
|
|
124
|
+
const cards = useSeatCards({
|
|
125
|
+
rootRef,
|
|
126
|
+
renderMap,
|
|
127
|
+
selection: selectionSet,
|
|
128
|
+
locale: resolvedLocale,
|
|
129
|
+
ariaStrings,
|
|
130
|
+
getSeatNode,
|
|
131
|
+
focusSeat,
|
|
132
|
+
onSeatHover,
|
|
133
|
+
renderHoverCard,
|
|
134
|
+
renderClickCard,
|
|
135
|
+
placement: seatCardPlacement,
|
|
136
|
+
className: seatCardClassName,
|
|
137
|
+
appearance: seatCardAppearance,
|
|
138
|
+
hoverCardDelay,
|
|
139
|
+
hoverCardOnFocus,
|
|
140
|
+
});
|
|
141
|
+
/**
|
|
142
|
+
* Whether a click behaviour is configured (D14): `onSeatClick` or a click
|
|
143
|
+
* card. It is what keeps a read-only map's seats clickable and reachable.
|
|
144
|
+
*/
|
|
145
|
+
const clickable = !!onSeatClick || !!renderClickCard;
|
|
146
|
+
/** Seats take pointer and keyboard interaction: to select, to click, or to show a card. */
|
|
147
|
+
const reachable = interactive || clickable || cards.tracksFocus;
|
|
148
|
+
// --- zoom, pan and maximize -----------------------------------------------
|
|
149
|
+
const zoom = useViewport({
|
|
150
|
+
enabled: zoomable,
|
|
151
|
+
maxZoom,
|
|
152
|
+
onViewportChange,
|
|
153
|
+
onGestureStart: cards.gesture,
|
|
154
|
+
});
|
|
124
155
|
const { maximized, toggleMaximized, setMaximized } = useMaximized({
|
|
125
156
|
enabled: maximizable,
|
|
126
157
|
rootRef,
|
|
@@ -157,11 +188,19 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
157
188
|
announce(ariaStrings.selectionSummary(next.length, formatTotal(total, resolvedLocale)));
|
|
158
189
|
}, [announce, ariaStrings, renderMap, resolvedLocale]);
|
|
159
190
|
// --- interaction --------------------------------------------------------
|
|
160
|
-
const onSeatActivate = useCallback((seatId) => {
|
|
191
|
+
const onSeatActivate = useCallback((seatId, source = 'pointer') => {
|
|
161
192
|
const seat = renderMap.seatsById.get(seatId);
|
|
162
193
|
if (!seat) {
|
|
163
194
|
return;
|
|
164
195
|
}
|
|
196
|
+
// The click is reported first, with the selection as it stood before it,
|
|
197
|
+
// and cannot change what follows (D13).
|
|
198
|
+
onSeatClick?.({ seat, selected: selectionSet.has(seatId), source });
|
|
199
|
+
cards.activate(seatId, source);
|
|
200
|
+
// A read-only map stops here: selection is off (D14).
|
|
201
|
+
if (!interactive) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
165
204
|
const outcome = toggleSeatSelection(selection, seatId, {
|
|
166
205
|
seatsById: renderMap.seatsById,
|
|
167
206
|
companionMode,
|
|
@@ -183,6 +222,10 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
183
222
|
}, [
|
|
184
223
|
renderMap,
|
|
185
224
|
selection,
|
|
225
|
+
selectionSet,
|
|
226
|
+
interactive,
|
|
227
|
+
onSeatClick,
|
|
228
|
+
cards.activate,
|
|
186
229
|
companionMode,
|
|
187
230
|
maxSelection,
|
|
188
231
|
announce,
|
|
@@ -200,10 +243,22 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
200
243
|
}
|
|
201
244
|
setFocusedSeat(seat.sectionId, seatId);
|
|
202
245
|
onSeatFocus?.(seat);
|
|
246
|
+
if (cards.tracksFocus) {
|
|
247
|
+
cards.focus(seatId);
|
|
248
|
+
}
|
|
203
249
|
if (zoomable) {
|
|
204
250
|
zoom.revealSeat(getSeatNode(seatId));
|
|
205
251
|
}
|
|
206
|
-
}, [
|
|
252
|
+
}, [
|
|
253
|
+
renderMap,
|
|
254
|
+
setFocusedSeat,
|
|
255
|
+
onSeatFocus,
|
|
256
|
+
cards.tracksFocus,
|
|
257
|
+
cards.focus,
|
|
258
|
+
zoomable,
|
|
259
|
+
zoom.revealSeat,
|
|
260
|
+
getSeatNode,
|
|
261
|
+
]);
|
|
207
262
|
/**
|
|
208
263
|
* Arrow keys walk the navigation graph, which follows §4.3.5 adjacency:
|
|
209
264
|
* along a row by `col`, across an aisle (a skipped `col`) rather than into
|
|
@@ -248,10 +303,15 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
248
303
|
case 'Enter':
|
|
249
304
|
case ' ':
|
|
250
305
|
event.preventDefault();
|
|
251
|
-
onSeatActivate(seatId);
|
|
306
|
+
onSeatActivate(seatId, 'keyboard');
|
|
252
307
|
return;
|
|
253
308
|
case 'Escape':
|
|
254
|
-
|
|
309
|
+
// An open card is dismissed before anything else gives way.
|
|
310
|
+
if (cards.dismiss()) {
|
|
311
|
+
event.preventDefault();
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
if (interactive && selection.length > 0) {
|
|
255
315
|
event.preventDefault();
|
|
256
316
|
commitSelection([]);
|
|
257
317
|
announceSelection([]);
|
|
@@ -264,7 +324,16 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
264
324
|
event.preventDefault();
|
|
265
325
|
moveFocusTo(sectionId, target);
|
|
266
326
|
}
|
|
267
|
-
}, [
|
|
327
|
+
}, [
|
|
328
|
+
graphs,
|
|
329
|
+
onSeatActivate,
|
|
330
|
+
selection,
|
|
331
|
+
interactive,
|
|
332
|
+
cards.dismiss,
|
|
333
|
+
commitSelection,
|
|
334
|
+
announceSelection,
|
|
335
|
+
moveFocusTo,
|
|
336
|
+
]);
|
|
268
337
|
// --- public handle ------------------------------------------------------
|
|
269
338
|
const summary = useMemo(() => summarizeSelection(renderMap, selection), [renderMap, selection]);
|
|
270
339
|
const zoomToSection = useCallback((sectionId) => {
|
|
@@ -276,6 +345,9 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
276
345
|
useImperativeHandle(ref, () => ({
|
|
277
346
|
summary,
|
|
278
347
|
focusSeat,
|
|
348
|
+
openSeatCard: cards.openSeatCard,
|
|
349
|
+
closeSeatCard: cards.closeSeatCard,
|
|
350
|
+
openSeatCardId: cards.openSeatCardId,
|
|
279
351
|
viewport: zoom.viewport,
|
|
280
352
|
zoomIn: zoom.zoomIn,
|
|
281
353
|
zoomOut: zoom.zoomOut,
|
|
@@ -286,6 +358,9 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
286
358
|
}), [
|
|
287
359
|
summary,
|
|
288
360
|
focusSeat,
|
|
361
|
+
cards.openSeatCard,
|
|
362
|
+
cards.closeSeatCard,
|
|
363
|
+
cards.openSeatCardId,
|
|
289
364
|
zoom.viewport,
|
|
290
365
|
zoom.zoomIn,
|
|
291
366
|
zoom.zoomOut,
|
|
@@ -307,6 +382,11 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
307
382
|
event.preventDefault();
|
|
308
383
|
return;
|
|
309
384
|
}
|
|
385
|
+
if (event.key === 'Escape' && cards.dismiss()) {
|
|
386
|
+
// A card in the way goes first; a second Escape leaves a maximized map.
|
|
387
|
+
event.preventDefault();
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
310
390
|
if (event.key === 'Escape' && maximized) {
|
|
311
391
|
event.preventDefault();
|
|
312
392
|
setMaximized(false);
|
|
@@ -321,12 +401,15 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
321
401
|
'--kerusi-focus-ring-input': resolvedColors.focusRing,
|
|
322
402
|
// `unitScale` CSS pixels per canvas unit, at most.
|
|
323
403
|
maxWidth: layout.width * unitScale,
|
|
324
|
-
}, children: [_jsx("rect", { x: 0, y: 0, width: layout.width, height: layout.height, style: { fill: cssVar('backdrop', resolvedColors.backdrop) } }), layout.sections.map((placed) => (_jsx(KerusiSection, { layout: placed, label: labelFor(placed.section), showLabel: showSectionLabels, selection: selectionSet, focusedSeatId: focusedSeatIds[placed.section.id] ?? null, ariaLabels: ariaLabels, colors: resolvedColors, typeColors: typeColors, seatTypeStyles: seatTypeStyles, seatStyle: seatStyle, renderSeat: renderSeat, interactive: interactive, onSeatActivate: onSeatActivate, onSeatFocused: onSeatFocused, onSeatKeyDown: (event) => onKeyDown(placed.section.id, event), registerSeat: registerSeat }, placed.section.id)))] }));
|
|
404
|
+
}, children: [_jsx("rect", { x: 0, y: 0, width: layout.width, height: layout.height, style: { fill: cssVar('backdrop', resolvedColors.backdrop) } }), layout.sections.map((placed) => (_jsx(KerusiSection, { layout: placed, label: labelFor(placed.section), showLabel: showSectionLabels, selection: selectionSet, focusedSeatId: focusedSeatIds[placed.section.id] ?? null, ariaLabels: ariaLabels, colors: resolvedColors, typeColors: typeColors, seatTypeStyles: seatTypeStyles, seatStyle: seatStyle, renderSeat: renderSeat, interactive: interactive, clickable: clickable, reachable: reachable, describedBy: cards.describedBy, onSeatActivate: onSeatActivate, onSeatFocused: onSeatFocused, onSeatBlurred: cards.tracksFocus ? cards.blur : undefined, onSeatKeyDown: (event) => onKeyDown(placed.section.id, event), onSeatPointer: cards.tracksPointer ? cards.pointer : undefined, registerSeat: registerSeat }, placed.section.id)))] }));
|
|
325
405
|
const focusRing = { '--kerusi-focus-ring-input': resolvedColors.focusRing };
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
406
|
+
// The palette, handed to the stylesheet, which puts the `--kerusi-control-*`
|
|
407
|
+
// tokens in front of it. Inline colours on the buttons would beat those.
|
|
408
|
+
const toolbarStyle = {
|
|
409
|
+
...focusRing,
|
|
410
|
+
'--kerusi-control-bg-input': controlColors.buttonBackground,
|
|
411
|
+
'--kerusi-control-fg-input': controlColors.buttonColor,
|
|
412
|
+
'--kerusi-control-border-input': controlColors.buttonBorder,
|
|
330
413
|
};
|
|
331
414
|
const classes = ['kerusi-seatmap', className, maximized && 'kerusi-seatmap--maximized']
|
|
332
415
|
.filter(Boolean)
|
|
@@ -337,14 +420,14 @@ export const KerusiSeatmap = forwardRef(function KerusiSeatmap(props, ref) {
|
|
|
337
420
|
background: controlColors.maximizedBackground,
|
|
338
421
|
color: controlColors.maximizedColor,
|
|
339
422
|
}
|
|
340
|
-
: style, onKeyDown: onRootKeyDown, children: [zoomable || maximizable ? (_jsxs("div", { className: "kerusi-seatmap__stage", children: [showToolbar && (_jsxs("div", { className: "kerusi-toolbar", role: "toolbar", "aria-label": strings.toolbar, style:
|
|
423
|
+
: style, onKeyDown: onRootKeyDown, children: [zoomable || maximizable ? (_jsxs("div", { className: "kerusi-seatmap__stage", children: [showToolbar && (_jsxs("div", { className: "kerusi-toolbar", role: "toolbar", "aria-label": strings.toolbar, style: toolbarStyle, children: [zoomable && showZoomControls && (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "kerusi-control kerusi-control--zoom-in", "aria-label": strings.zoomIn, "aria-disabled": atMaxZoom, onClick: zoom.zoomIn, children: _jsx("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", children: _jsx("path", { d: "M12 5v14M5 12h14" }) }) }), _jsx("button", { type: "button", className: "kerusi-control kerusi-control--zoom-out", "aria-label": strings.zoomOut, "aria-disabled": atFit, onClick: zoom.zoomOut, children: _jsx("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", children: _jsx("path", { d: "M5 12h14" }) }) }), _jsx("button", { type: "button", className: "kerusi-control kerusi-control--zoom-reset", "aria-label": strings.zoomReset, "aria-disabled": atFit, onClick: zoom.resetZoom, children: _jsx("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", children: _jsx("path", { d: "M3 12a9 9 0 1 0 3-6.7M3 4v5h5" }) }) })] })), maximizable && (_jsx("button", { type: "button", className: "kerusi-control kerusi-control--maximize", "aria-label": maximized ? strings.restore : strings.maximize, onClick: toggleMaximized, children: _jsx("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", children: maximized ? (_jsx("path", { d: "M9 4v5H4M15 4v5h5M15 20v-5h5M9 20v-5H4" })) : (_jsx("path", { d: "M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5" })) }) }))] })), zoomable ? (_jsx("div", { ref: zoom.viewRef, className: "kerusi-viewport", role: "group", tabIndex: 0, "aria-label": strings.viewport, style: {
|
|
341
424
|
...focusRing,
|
|
342
425
|
// Lets a maximized map fit the whole canvas to the screen.
|
|
343
426
|
'--kerusi-canvas-aspect': layout.width / layout.height,
|
|
344
427
|
touchAction: viewportTouchAction(zoom.viewport, maximized),
|
|
345
428
|
}, children: _jsx("div", { ref: zoom.contentRef, className: zoom.animated
|
|
346
429
|
? 'kerusi-viewport__content kerusi-viewport__content--animated'
|
|
347
|
-
: 'kerusi-viewport__content', style: { transform: viewportTransform(zoom.viewport) }, children: mapSvg }) })) : (mapSvg)] })) : (mapSvg), showLegend && (_jsx(KerusiLegend, { legend: renderMap.legend, locale: resolvedLocale, colors: resolvedColors, typeColors: typeColors, seatTypeStyles: seatTypeStyles, showPrices: showLegendPrices })), _jsx("p", { className: "kerusi-sr-only", "aria-live": "polite", "aria-atomic": "true", children: liveMessage }), children] }));
|
|
430
|
+
: 'kerusi-viewport__content', style: { transform: viewportTransform(zoom.viewport) }, children: mapSvg }) })) : (mapSvg)] })) : (mapSvg), showLegend && (_jsx(KerusiLegend, { legend: renderMap.legend, locale: resolvedLocale, colors: resolvedColors, typeColors: typeColors, seatTypeStyles: seatTypeStyles, showPrices: showLegendPrices })), cards.elements, _jsx("p", { className: "kerusi-sr-only", "aria-live": "polite", "aria-atomic": "true", children: liveMessage }), children] }));
|
|
348
431
|
});
|
|
349
432
|
function formatTotal(total, locale) {
|
|
350
433
|
return total ? formatMoney(total, locale) : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kerusi-seatmap.js","sourceRoot":"","sources":["../src/kerusi-seatmap.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kerusi-seatmap.js","sourceRoot":"","sources":["../src/kerusi-seatmap.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,QAAQ,EACR,WAAW,IAAI,aAAa,EAC5B,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,OAAO,EACP,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,YAAY,GAAsB,EAAE,CAAC;AAC3C,MAAM,2BAA2B,GAAG,CAAC,WAAW,CAAU,CAAC;AAC3D,MAAM,YAAY,GAAmD,EAAE,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,SAAS,aAAa,CAAC,KAAK,EAAE,GAAG;IAC/B,MAAM,EACJ,GAAG,EACH,KAAK,EACL,OAAO,EACP,SAAS,EAAE,mBAAmB,EAC9B,gBAAgB,GAAG,YAAY,EAC/B,iBAAiB,EACjB,MAAM,EACN,GAAG,GAAG,MAAM,EACZ,WAAW,GAAG,yBAAyB,EACvC,MAAM,EACN,UAAU,GAAG,IAAI,EACjB,cAAc,EACd,SAAS,EACT,UAAU,EACV,SAAS,GAAG,CAAC,EACb,iBAAiB,GAAG,IAAI,EACxB,UAAU,GAAG,KAAK,EAClB,gBAAgB,GAAG,IAAI,EACvB,UAAU,EACV,gBAAgB,GAAG,YAAY,EAC/B,kBAAkB,GAAG,2BAA2B,EAChD,aAAa,GAAG,MAAM,EACtB,YAAY,EACZ,cAAc,EACd,WAAW,GAAG,IAAI,EAClB,WAAW,GAAG,KAAK,EACnB,gBAAgB,GAAG,IAAI,EACvB,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,gBAAgB,EAC1B,gBAAgB,GAAG,IAAI,EACvB,WAAW,GAAG,KAAK,EACnB,cAAc,EACd,QAAQ,GAAG,SAAS,EACpB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,GAAG,KAAK,EACzB,iBAAiB,EACjB,kBAAkB,GAAG,SAAS,EAC9B,cAAc,EACd,gBAAgB,GAAG,KAAK,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,QAAQ,GACT,GAAG,KAAK,CAAC;IAEV,2EAA2E;IAE3E,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GACrD,QAAQ,CAAoB,gBAAgB,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,mBAAmB,KAAK,SAAS,CAAC;IACvD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAE7E,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,IAAuB,EAAE,EAAE;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAClC,CAAC;IAEF,2EAA2E;IAE3E,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAC9E,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAChC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,wEAAwE;QACxE,+CAA+C;QAC/C,uDAAuD;IACzD,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,2EAA2E;IAE3E,qEAAqE;IACrE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAChF,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEpC,2EAA2E;IAC3E,MAAM,cAAc,GAAG,OAAO,CAA0B,GAAG,EAAE;QAC3D,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,oEAAoE;QACpE,gEAAgE;QAChE,KAAK,UAAU,CAAC;QAChB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAErC,MAAM,iBAAiB,GAAG,OAAO,CAAgC,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;aAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAErB,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAExC,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CACH,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE;QACpC,MAAM;QACN,UAAU,EAAE,iBAAiB;QAC7B,kBAAkB;QAClB,cAAc;KACf,CAAC,EACJ,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,CAAC,CACrF,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC;IAC1E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpE,oFAAoF;IACpF,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EACjD,CAAC,SAAS,EAAE,KAAK,CAAC,CACnB,CAAC;IAEF,6EAA6E;IAC7E,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CACH,IAAI,GAAG,CACL,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAClC,OAAO,CAAC,EAAE;QACV,oBAAoB,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;KAC9C,CAAC,CACH,EACH,CAAC,SAAS,EAAE,KAAK,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CACH,IAAI,GAAG,CACL,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC,EAAE;QACP,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,CAAC;KACjD,CAAC,CACH,EACH,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC,CACzC,CAAC;IAEF,2EAA2E;IAE3E,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,GACzF,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEtC,6EAA6E;IAE7E,MAAM,OAAO,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,YAAY,CAAC;QACzB,OAAO;QACP,SAAS;QACT,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,cAAc;QACtB,WAAW;QACX,WAAW;QACX,SAAS;QACT,WAAW;QACX,eAAe;QACf,eAAe;QACf,SAAS,EAAE,iBAAiB;QAC5B,SAAS,EAAE,iBAAiB;QAC5B,UAAU,EAAE,kBAAkB;QAC9B,cAAc;QACd,gBAAgB;KACjB,CAAC,CAAC;IAEH;;;OAGG;IACH,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,eAAe,CAAC;IACrD,2FAA2F;IAC3F,MAAM,SAAS,GAAG,WAAW,IAAI,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC;IAEhE,6EAA6E;IAE7E,MAAM,IAAI,GAAG,WAAW,CAAC;QACvB,OAAO,EAAE,QAAQ;QACjB,OAAO;QACP,gBAAgB;QAChB,cAAc,EAAE,KAAK,CAAC,OAAO;KAC9B,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;QAChE,OAAO,EAAE,WAAW;QACpB,OAAO;QACP,QAAQ,EAAE,iBAAiB;KAC5B,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,CAAC,QAAQ,IAAI,gBAAgB,CAAC,IAAI,WAAW,CAAC;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAEnE;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,OAAe,EAAE,EAAE;QAC/C,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GACf,YAAY,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC;IAExF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,IAAuB,EAAE,EAAE;QAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtD,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC,EACD,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,CACnD,CAAC;IAEF,2EAA2E;IAE3E,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,MAAc,EAAE,SAA0B,SAAS,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,wCAAwC;QACxC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE/B,sDAAsD;QACtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE;YACrD,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,aAAa;YACb,YAAY;SACb,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAClC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YACrE,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAO,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,KAAK,GAAoB;YAC7B,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC;QACF,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACrE,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,EACD;QACE,SAAS;QACT,SAAS;QACT,YAAY;QACZ,WAAW;QACX,WAAW;QACX,KAAK,CAAC,QAAQ;QACd,aAAa;QACb,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,gBAAgB;QAChB,eAAe;QACf,YAAY;QACZ,cAAc;QACd,iBAAiB;KAClB,CACF,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,MAAc,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,EACD;QACE,SAAS;QACT,cAAc;QACd,WAAW;QACX,KAAK,CAAC,WAAW;QACjB,KAAK,CAAC,KAAK;QACX,QAAQ;QACR,IAAI,CAAC,UAAU;QACf,WAAW;KACZ,CACF,CAAC;IAEF;;;;OAIG;IACH,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,SAAiB,EAAE,KAAsC,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAI,KAAK,CAAC,MAA6B,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEhD,IAAI,MAA0B,CAAC;QAC/B,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,WAAW;gBACd,MAAM,GAAG,UAAU,EAAE,IAAI,CAAC;gBAC1B,MAAM;YACR,KAAK,YAAY;gBACf,MAAM,GAAG,UAAU,EAAE,KAAK,CAAC;gBAC3B,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,GAAG,UAAU,EAAE,EAAE,CAAC;gBACxB,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,GAAG,UAAU,EAAE,IAAI,CAAC;gBAC1B,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC;gBAC5D,MAAM;YACR,KAAK,KAAK;gBACR,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC;gBACzD,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;gBACrB,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;gBACpB,MAAM;YACR,KAAK,OAAO,CAAC;YACb,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBACnC,OAAO;YACT,KAAK,QAAQ;gBACX,4DAA4D;gBAC5D,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,OAAO;gBACT,CAAC;gBACD,IAAI,WAAW,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,eAAe,CAAC,EAAE,CAAC,CAAC;oBACpB,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC;gBACD,OAAO;YACT;gBACE,OAAO;QACX,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,EACD;QACE,MAAM;QACN,cAAc;QACd,SAAS;QACT,WAAW;QACX,KAAK,CAAC,OAAO;QACb,eAAe;QACf,iBAAiB;QACjB,WAAW;KACZ,CACF,CAAC;IAEF,2EAA2E;IAE3E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhG,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,SAAiB,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACvE,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAChC,CAAC;IAEF,mBAAmB,CACjB,GAAG,EACH,GAAG,EAAE,CAAC,CAAC;QACL,OAAO;QACP,SAAS;QACT,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa;QACb,SAAS;QACT,eAAe;KAChB,CAAC,EACF;QACE,OAAO;QACP,SAAS;QACT,KAAK,CAAC,YAAY;QAClB,KAAK,CAAC,aAAa;QACnB,KAAK,CAAC,cAAc;QACpB,IAAI,CAAC,QAAQ;QACb,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,SAAS;QACd,aAAa;QACb,SAAS;QACT,eAAe;KAChB,CACF,CAAC;IAEF;;;;OAIG;IACH,MAAM,aAAa,GAAG,CAAC,KAAyC,EAAE,EAAE;QAClE,IAAI,KAAK,CAAC,gBAAgB,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAA4B,CAAC,EAAE,CAAC;YACpF,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,wEAAwE;YACxE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,SAAS,EAAE,CAAC;YACxC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,2EAA2E;IAE3E,MAAM,QAAQ,GAAG,CAAC,OAAsB,EAAsB,EAAE,CAC9D,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAEvD,qFAAqF;IACrF,MAAM,MAAM,GAAG,CACb,eACE,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,qBAAqB,EAC/B,IAAI,EAAC,cAAc,EACnB,SAAS,EAAC,OAAO,EACjB,OAAO,EAAE,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAC/C,mBAAmB,EAAC,eAAe,EACnC,KAAK,EACH;YACE,oEAAoE;YACpE,iEAAiE;YACjE,2BAA2B,EAAE,cAAc,CAAC,SAAS;YACrD,mDAAmD;YACnD,QAAQ,EAAE,MAAM,CAAC,KAAK,GAAG,SAAS;SAClB,aAGpB,eACE,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,GAC5D,EAGD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,KAAC,aAAa,IAEZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAC/B,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,YAAY,EACvB,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,EACxD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EACzD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,EAC7D,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC9D,YAAY,EAAE,YAAY,IArBrB,MAAM,CAAC,OAAO,CAAC,EAAE,CAsBtB,CACH,CAAC,IACE,CACP,CAAC;IAEF,MAAM,SAAS,GAAG,EAAE,2BAA2B,EAAE,cAAc,CAAC,SAAS,EAAmB,CAAC;IAC7F,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,YAAY,GAAG;QACnB,GAAG,SAAS;QACZ,2BAA2B,EAAE,aAAa,CAAC,gBAAgB;QAC3D,2BAA2B,EAAE,aAAa,CAAC,WAAW;QACtD,+BAA+B,EAAE,aAAa,CAAC,YAAY;KAC3C,CAAC;IACnB,MAAM,OAAO,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,IAAI,2BAA2B,CAAC;SACpF,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,CACL,eACE,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,OAAO,EAClB,IAAI,EAAC,OAAO,gBACA,SAAS,CAAC,IAAI,IAAI,YAAY,SAAS,CAAC,EAAE,EAAE,EACxD,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC9B,IAAI,EAAE,cAAc,EACpB,KAAK,EACH,SAAS;YACP,CAAC,CAAC;gBACE,GAAG,KAAK;gBACR,UAAU,EAAE,aAAa,CAAC,mBAAmB;gBAC7C,KAAK,EAAE,aAAa,CAAC,cAAc;aACpC;YACH,CAAC,CAAC,KAAK,EAEX,SAAS,EAAE,aAAa,aAIvB,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CACzB,eAAK,SAAS,EAAC,uBAAuB,aACnC,WAAW,IAAI,CACd,eACE,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EAAC,SAAS,gBACF,OAAO,CAAC,OAAO,EAC3B,KAAK,EAAE,YAAY,aAElB,QAAQ,IAAI,gBAAgB,IAAI,CAC/B,8BACE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,wCAAwC,gBACtC,OAAO,CAAC,MAAM,mBACX,SAAS,EACxB,OAAO,EAAE,IAAI,CAAC,MAAM,YAEpB,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,EAAC,SAAS,EAAC,OAAO,YAC3D,eAAM,CAAC,EAAC,kBAAkB,GAAG,GACzB,GACC,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yCAAyC,gBACvC,OAAO,CAAC,OAAO,mBACZ,KAAK,EACpB,OAAO,EAAE,IAAI,CAAC,OAAO,YAErB,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,EAAC,SAAS,EAAC,OAAO,YAC3D,eAAM,CAAC,EAAC,UAAU,GAAG,GACjB,GACC,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,2CAA2C,gBACzC,OAAO,CAAC,SAAS,mBACd,KAAK,EACpB,OAAO,EAAE,IAAI,CAAC,SAAS,YAEvB,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,EAAC,SAAS,EAAC,OAAO,YAC3D,eAAM,CAAC,EAAC,+BAA+B,GAAG,GACtC,GACC,IACR,CACJ,EACA,WAAW,IAAI,CACd,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yCAAyC,gBACvC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAC1D,OAAO,EAAE,eAAe,YAExB,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,EAAC,SAAS,EAAC,OAAO,YAC1D,SAAS,CAAC,CAAC,CAAC,CACX,eAAM,CAAC,EAAC,wCAAwC,GAAG,CACpD,CAAC,CAAC,CAAC,CACF,eAAM,CAAC,EAAC,wCAAwC,GAAG,CACpD,GACG,GACC,CACV,IACG,CACP,EAEA,QAAQ,CAAC,CAAC,CAAC,CACV,cACE,GAAG,EAAE,IAAI,CAAC,OAAO,EACjB,SAAS,EAAC,iBAAiB,EAC3B,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,CAAC,gBACC,OAAO,CAAC,QAAQ,EAC5B,KAAK,EACH;4BACE,GAAG,SAAS;4BACZ,2DAA2D;4BAC3D,wBAAwB,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM;4BACtD,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;yBAC1C,YAGpB,cACE,GAAG,EAAE,IAAI,CAAC,UAAU,EACpB,SAAS,EACP,IAAI,CAAC,QAAQ;gCACX,CAAC,CAAC,6DAA6D;gCAC/D,CAAC,CAAC,0BAA0B,EAEhC,KAAK,EAAE,EAAE,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,YAErD,MAAM,GACH,GACF,CACP,CAAC,CAAC,CAAC,CACF,MAAM,CACP,IACG,CACP,CAAC,CAAC,CAAC,CACF,MAAM,CACP,EAEA,UAAU,IAAI,CACb,KAAC,YAAY,IACX,MAAM,EAAE,SAAS,CAAC,MAAM,EACxB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,gBAAgB,GAC5B,CACH,EAIA,KAAK,CAAC,QAAQ,EAEf,YAAG,SAAS,EAAC,gBAAgB,eAAW,QAAQ,iBAAa,MAAM,YAChE,WAAW,GACV,EAEH,QAAQ,IACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,SAAS,WAAW,CAAC,KAAwB,EAAE,MAAc;IAC3D,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC"}
|
package/dist/kerusi-section.d.ts
CHANGED
|
@@ -27,11 +27,34 @@ export interface KerusiSectionProps {
|
|
|
27
27
|
seatStyle?: SeatStyleFn;
|
|
28
28
|
/** Draws the inside of each seat in place of the stock glyph. */
|
|
29
29
|
renderSeat?: (ctx: SeatRenderContext) => ReactNode;
|
|
30
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* When false, selection is off: seats render read-only, with no `aria-pressed`
|
|
32
|
+
* once a click behaviour is set. Whether they still respond is `reachable`'s.
|
|
33
|
+
*/
|
|
31
34
|
interactive?: boolean;
|
|
32
|
-
|
|
35
|
+
/**
|
|
36
|
+
* A click behaviour is configured (`onSeatClick` or a click card). On a
|
|
37
|
+
* read-only map this keeps the seats clickable without turning selection on
|
|
38
|
+
* (D14), so `aria-pressed` is left off.
|
|
39
|
+
*/
|
|
40
|
+
clickable?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether seats take pointer and keyboard interaction at all: they respond,
|
|
43
|
+
* and the section's tab stop is reachable. Defaults to `interactive`.
|
|
44
|
+
*/
|
|
45
|
+
reachable?: boolean;
|
|
46
|
+
/** The seat that shows a hover card, and the card's `id`, for `aria-describedby`. */
|
|
47
|
+
describedBy?: {
|
|
48
|
+
seatId: string;
|
|
49
|
+
id: string;
|
|
50
|
+
} | null;
|
|
51
|
+
onSeatActivate?: (seatId: string, source: 'pointer') => void;
|
|
33
52
|
onSeatFocused?: (seatId: string) => void;
|
|
53
|
+
/** Present only when a hover card follows keyboard focus (D12). */
|
|
54
|
+
onSeatBlurred?: (seatId: string) => void;
|
|
34
55
|
onSeatKeyDown?: (event: ReactKeyboardEvent<SVGGElement>) => void;
|
|
56
|
+
/** Present only when something listens for hover: `onSeatHover` or a hover card. */
|
|
57
|
+
onSeatPointer?: (type: 'enter' | 'leave' | 'move', seatId: string, pointerType: string) => void;
|
|
35
58
|
/** Called with each seat's `<g>` as it mounts and unmounts, for focus moves. */
|
|
36
59
|
registerSeat?: (seatId: string, node: SVGGElement | null) => void;
|
|
37
60
|
}
|
|
@@ -44,5 +67,5 @@ export interface KerusiSectionProps {
|
|
|
44
67
|
*
|
|
45
68
|
* This component holds no state. It takes a placed layout and reports intent.
|
|
46
69
|
*/
|
|
47
|
-
export declare function KerusiSection({ layout, label, showLabel, selection, focusedSeatId, ariaLabels, colors, typeColors, seatTypeStyles, seatStyle, renderSeat, interactive, onSeatActivate, onSeatFocused, onSeatKeyDown, registerSeat, }: KerusiSectionProps): import("react").JSX.Element;
|
|
70
|
+
export declare function KerusiSection({ layout, label, showLabel, selection, focusedSeatId, ariaLabels, colors, typeColors, seatTypeStyles, seatStyle, renderSeat, interactive, clickable, reachable, describedBy, onSeatActivate, onSeatFocused, onSeatBlurred, onSeatKeyDown, onSeatPointer, registerSeat, }: KerusiSectionProps): import("react").JSX.Element;
|
|
48
71
|
//# sourceMappingURL=kerusi-section.d.ts.map
|