@bimetal/calendar-angular-components 0.35.0 → 0.37.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/dist/binding/controller.d.ts +10 -1
- package/dist/binding/controller.d.ts.map +1 -1
- package/dist/binding/controller.js +11 -1
- package/dist/binding/controller.js.map +1 -1
- package/dist/binding/index.d.ts +4 -2
- package/dist/binding/index.d.ts.map +1 -1
- package/dist/binding/index.js +5 -2
- package/dist/binding/index.js.map +1 -1
- package/dist/binding/services/pointer-gesture.service.d.ts +52 -0
- package/dist/binding/services/pointer-gesture.service.d.ts.map +1 -0
- package/dist/binding/services/pointer-gesture.service.js +83 -0
- package/dist/binding/services/pointer-gesture.service.js.map +1 -0
- package/dist/components/Calendar.d.ts +20 -4
- package/dist/components/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar.js +133 -31
- package/dist/components/Calendar.js.map +1 -1
- package/dist/components/CalendarHeader.d.ts +3 -0
- package/dist/components/CalendarHeader.d.ts.map +1 -1
- package/dist/components/CalendarHeader.js +10 -4
- package/dist/components/CalendarHeader.js.map +1 -1
- package/dist/components/CategoryFilter.d.ts +3 -0
- package/dist/components/CategoryFilter.d.ts.map +1 -1
- package/dist/components/CategoryFilter.js +9 -5
- package/dist/components/CategoryFilter.js.map +1 -1
- package/dist/components/EventBar.d.ts +11 -4
- package/dist/components/EventBar.d.ts.map +1 -1
- package/dist/components/EventBar.js +87 -32
- package/dist/components/EventBar.js.map +1 -1
- package/dist/components/EventDialog.d.ts +12 -6
- package/dist/components/EventDialog.d.ts.map +1 -1
- package/dist/components/EventDialog.js +122 -45
- package/dist/components/EventDialog.js.map +1 -1
- package/dist/components/EventHistory.d.ts +14 -10
- package/dist/components/EventHistory.d.ts.map +1 -1
- package/dist/components/EventHistory.js +59 -56
- package/dist/components/EventHistory.js.map +1 -1
- package/dist/styles/index.css.d.ts +3 -0
- package/dist/views/day/DayView.d.ts +26 -4
- package/dist/views/day/DayView.d.ts.map +1 -1
- package/dist/views/day/DayView.js +56 -17
- package/dist/views/day/DayView.js.map +1 -1
- package/dist/views/month/MonthView.d.ts +14 -3
- package/dist/views/month/MonthView.d.ts.map +1 -1
- package/dist/views/month/MonthView.js +55 -7
- package/dist/views/month/MonthView.js.map +1 -1
- package/dist/views/month/WeekRow.d.ts +19 -3
- package/dist/views/month/WeekRow.d.ts.map +1 -1
- package/dist/views/month/WeekRow.js +73 -34
- package/dist/views/month/WeekRow.js.map +1 -1
- package/dist/views/resource/ResourceView.d.ts +28 -1
- package/dist/views/resource/ResourceView.d.ts.map +1 -1
- package/dist/views/resource/ResourceView.js +78 -21
- package/dist/views/resource/ResourceView.js.map +1 -1
- package/dist/views/timeline/TimelineView.d.ts +25 -3
- package/dist/views/timeline/TimelineView.d.ts.map +1 -1
- package/dist/views/timeline/TimelineView.js +77 -16
- package/dist/views/timeline/TimelineView.js.map +1 -1
- package/dist/views/week/AllDayRow.d.ts +16 -3
- package/dist/views/week/AllDayRow.d.ts.map +1 -1
- package/dist/views/week/AllDayRow.js +47 -10
- package/dist/views/week/AllDayRow.js.map +1 -1
- package/dist/views/week/TimeEvent.d.ts +11 -4
- package/dist/views/week/TimeEvent.d.ts.map +1 -1
- package/dist/views/week/TimeEvent.js +76 -26
- package/dist/views/week/TimeEvent.js.map +1 -1
- package/dist/views/week/WeekView.d.ts +16 -1
- package/dist/views/week/WeekView.d.ts.map +1 -1
- package/dist/views/week/WeekView.js +53 -18
- package/dist/views/week/WeekView.js.map +1 -1
- package/dist/views/year/YearView.d.ts +2 -0
- package/dist/views/year/YearView.d.ts.map +1 -1
- package/dist/views/year/YearView.js +17 -1
- package/dist/views/year/YearView.js.map +1 -1
- package/package.json +17 -13
|
@@ -18,5 +18,14 @@ export interface CalendarControllerBinding {
|
|
|
18
18
|
readonly ctrl: CalendarController;
|
|
19
19
|
destroy(): void;
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Create the controller and bridge it into an Angular signal (see above).
|
|
23
|
+
*
|
|
24
|
+
* OPTIONEN: GETTER ODER OBJEKT (bimetal-181). Der Getter (`() => ({ … })`) hält die
|
|
25
|
+
* IDENTITÄT der Callbacks lebendig — er wird bei jedem Callback-Aufruf erneut
|
|
26
|
+
* gerufen; ein rohes Objekt bleibt erlaubt und verhält sich wie ein Getter, der
|
|
27
|
+
* immer dasselbe baut. Die ANWESENHEIT eines Callbacks ist in beiden Formen am
|
|
28
|
+
* Aufbau festgelegt (`toLiveOptions`).
|
|
29
|
+
*/
|
|
30
|
+
export declare function createCalendarControllerBinding(options: CalendarControllerOptions | (() => CalendarControllerOptions), zone?: NgZone): CalendarControllerBinding;
|
|
22
31
|
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/binding/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/binding/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAGjE,OAAO,KAAK,EACV,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,yBAAyB,GAAG,CAAC,MAAM,yBAAyB,CAAC,EACtE,IAAI,CAAC,EAAE,MAAM,GACZ,yBAAyB,CAc3B"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { signal } from '@angular/core';
|
|
2
|
+
import { toLiveOptions } from '@bimetal/angular';
|
|
2
3
|
import { createCalendarController } from '@bimetal/calendar-headless';
|
|
4
|
+
/**
|
|
5
|
+
* Create the controller and bridge it into an Angular signal (see above).
|
|
6
|
+
*
|
|
7
|
+
* OPTIONEN: GETTER ODER OBJEKT (bimetal-181). Der Getter (`() => ({ … })`) hält die
|
|
8
|
+
* IDENTITÄT der Callbacks lebendig — er wird bei jedem Callback-Aufruf erneut
|
|
9
|
+
* gerufen; ein rohes Objekt bleibt erlaubt und verhält sich wie ein Getter, der
|
|
10
|
+
* immer dasselbe baut. Die ANWESENHEIT eines Callbacks ist in beiden Formen am
|
|
11
|
+
* Aufbau festgelegt (`toLiveOptions`).
|
|
12
|
+
*/
|
|
3
13
|
export function createCalendarControllerBinding(options, zone) {
|
|
4
|
-
const ctrl = createCalendarController(options);
|
|
14
|
+
const ctrl = createCalendarController(toLiveOptions(options));
|
|
5
15
|
const snapshot = signal(ctrl.getSnapshot());
|
|
6
16
|
const run = zone ? (fn) => zone.run(fn) : (fn) => fn();
|
|
7
17
|
const unsub = ctrl.subscribe(() => run(() => snapshot.set(ctrl.getSnapshot())));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/binding/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA4B,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AA0BtE,MAAM,UAAU,+BAA+B,CAC7C,
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/binding/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA4B,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AA0BtE;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAsE,EACtE,IAAa;IAEb,MAAM,IAAI,GAAG,wBAAwB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,MAAM,CAA6B,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhF,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,OAAO;YACL,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/binding/index.d.ts
CHANGED
|
@@ -12,11 +12,13 @@ export type { CalendarControllerBinding } from './controller.js';
|
|
|
12
12
|
export { createCalendarController } from '@bimetal/calendar-headless';
|
|
13
13
|
export type { CalendarController, CalendarControllerOptions, EventInteractionPolicy, ResolvedEventInteraction, CalendarControllerSnapshot, CustomViewSpec, SelectionState, } from '@bimetal/calendar-headless';
|
|
14
14
|
export { EventRenderService } from './services/event-render.service.js';
|
|
15
|
+
export { CalendarPointerGestureService } from './services/pointer-gesture.service.js';
|
|
15
16
|
export type { CalendarConfig, CalendarConfigInput, CalendarLocale, Category, ViewConfig, AnchorRect, CustomViewDefinition, CustomViewInputs, EventDialogInputs, EventDialogMode, EventRenderContext, EventRenderTemplateContext, EventRenderTemplate, EventClassNameFn, EventStyleFn, EventTitleFn, } from './types.js';
|
|
16
17
|
export type { DragPreview, DragInfo } from '@bimetal/calendar-headless';
|
|
17
|
-
export { snapTimeFromMouseY, parseDragInfo, DRAG_MIME, findExpandedEvent, buildDragInfo, writeCalendarDragData
|
|
18
|
+
export { snapTimeFromMouseY, parseDragInfo, DRAG_MIME, findExpandedEvent, buildDragInfo, writeCalendarDragData } from '@bimetal/calendar-headless';
|
|
19
|
+
export { installTransparentDragImage } from '@bimetal/a11y-dom';
|
|
18
20
|
export { WEEK_NUM_COL_WIDTH, getColFromX, ZERO_RECT } from '@bimetal/calendar-headless';
|
|
19
21
|
export { defaultLocale, defaultCalendarConfig, mergeCalendarConfig } from './config.js';
|
|
20
22
|
export { createViewConfigs } from './view-configs.js';
|
|
21
|
-
export { toDateStr, toTimeStr, parseDateStr, parseDateTimeStr } from '@bimetal/calendar-headless';
|
|
23
|
+
export { toDateStr, toTimeStr, formatTime, parseDateStr, parseDateTimeStr } from '@bimetal/calendar-headless';
|
|
22
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/binding/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAClE,YAAY,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,cAAc,EACd,cAAc,GACf,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/binding/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAClE,YAAY,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,cAAc,EACd,cAAc,GACf,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAGtF,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnJ,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGxF,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/binding/index.js
CHANGED
|
@@ -13,11 +13,14 @@ export { createCalendarControllerBinding } from './controller.js';
|
|
|
13
13
|
export { createCalendarController } from '@bimetal/calendar-headless';
|
|
14
14
|
// ── Services ───────────────────────────────────────────────────
|
|
15
15
|
export { EventRenderService } from './services/event-render.service.js';
|
|
16
|
-
export {
|
|
16
|
+
export { CalendarPointerGestureService } from './services/pointer-gesture.service.js';
|
|
17
|
+
export { snapTimeFromMouseY, parseDragInfo, DRAG_MIME, findExpandedEvent, buildDragInfo, writeCalendarDragData } from '@bimetal/calendar-headless';
|
|
18
|
+
// mcp-51 C1: der Drag-Ghost ist echter DOM-Code und lebt jetzt im geteilten DOM-Layer.
|
|
19
|
+
export { installTransparentDragImage } from '@bimetal/a11y-dom';
|
|
17
20
|
export { WEEK_NUM_COL_WIDTH, getColFromX, ZERO_RECT } from '@bimetal/calendar-headless';
|
|
18
21
|
// ── Config ──────────────────────────────────────────────────────
|
|
19
22
|
export { defaultLocale, defaultCalendarConfig, mergeCalendarConfig } from './config.js';
|
|
20
23
|
export { createViewConfigs } from './view-configs.js';
|
|
21
24
|
// ── Utilities ───────────────────────────────────────────────────
|
|
22
|
-
export { toDateStr, toTimeStr, parseDateStr, parseDateTimeStr } from '@bimetal/calendar-headless';
|
|
25
|
+
export { toDateStr, toTimeStr, formatTime, parseDateStr, parseDateTimeStr } from '@bimetal/calendar-headless';
|
|
23
26
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/binding/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kEAAkE;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAGlE,mEAAmE;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAWtE,kEAAkE;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/binding/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kEAAkE;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAGlE,mEAAmE;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAWtE,kEAAkE;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAsBtF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnJ,uFAAuF;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAExF,mEAAmE;AACnE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,mEAAmE;AACnE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mcp-57 Slice E — angular wiring for the ONE shared pointer-gesture FSM
|
|
3
|
+
* (`createPointerDragGesture`, calendar-headless). A VIEW component provides
|
|
4
|
+
* this service (component-level `providers: [...]`), configures it with its
|
|
5
|
+
* geometry in `ngOnInit`/`ngAfterViewInit` (closures over `this.*` stay
|
|
6
|
+
* fresh), and Angular destroys it with the view — which cancels a mid-flight
|
|
7
|
+
* gesture cleanly. Leaves inject it `@Optional()`: no providing ancestor =
|
|
8
|
+
* `null` = the leaf keeps its native-DnD fallback (a consumer view that
|
|
9
|
+
* mounts a leaf without a provider keeps a working drag). Nested providers
|
|
10
|
+
* override outer ones (AllDayRow inside WeekView), mirroring the other
|
|
11
|
+
* bindings' context nesting.
|
|
12
|
+
*/
|
|
13
|
+
import { OnDestroy } from '@angular/core';
|
|
14
|
+
import type { DragInfo, PointerDragGestureOptions } from '@bimetal/calendar-headless';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
export declare class CalendarPointerGestureService implements OnDestroy {
|
|
17
|
+
private readonly injector;
|
|
18
|
+
private fsm;
|
|
19
|
+
/** Eine registrierte, noch nicht gefeuerte Render-Sequenz aus `init()` (s. dort). */
|
|
20
|
+
private pending;
|
|
21
|
+
/** Leaf entry — safe to call before init (no-op until the view configured it). */
|
|
22
|
+
readonly onPointerDown: (info: DragInfo, pointerId: number, clientX: number, clientY: number, markDragged: () => void) => void;
|
|
23
|
+
/**
|
|
24
|
+
* View-side: (re)configure the FSM with this view's geometry.
|
|
25
|
+
*
|
|
26
|
+
* bimetal-230 — DER FSM-BAU LIEGT IN `afterNextRender`, NICHT IM AUFRUF. Er
|
|
27
|
+
* braucht `window`, und die Views rufen `init()` aus `ngAfterViewInit` —
|
|
28
|
+
* einem Hook, den Angular beim Server-Rendering EBENFALLS ausführt. Der
|
|
29
|
+
* ssr-harness (von bimetal-229 zum ersten Mal überhaupt gefahren) zeigte
|
|
30
|
+
* `ReferenceError: window is not defined` aus genau dieser Zeile.
|
|
31
|
+
*
|
|
32
|
+
* Angular war dabei FALSCH-GRÜN: der Wurf passiert nach dem Rendern, das
|
|
33
|
+
* Markup steht also schon und geht raus — der Test war grün, der Fehler stand
|
|
34
|
+
* nur im Server-Log. svelte und vue rufen ihre Entsprechung WÄHREND des
|
|
35
|
+
* Renderings und lieferten deshalb gar nichts; nur daran fiel die Klasse auf.
|
|
36
|
+
*
|
|
37
|
+
* `afterNextRender` läuft per Vertrag nie beim Server-Rendering. Damit ist der
|
|
38
|
+
* Zugriff STRUKTURELL unmöglich statt bewacht — dieselbe Entscheidung wie in
|
|
39
|
+
* den anderen drei Bindings (react hatte sie mit dem `useEffect` immer schon).
|
|
40
|
+
* Ein `isPlatformBrowser`-Guard hätte es auch getan, wäre aber die Bauform
|
|
41
|
+
* gewesen, die dieselbe Zusage an jeder Stelle wiederholt.
|
|
42
|
+
*
|
|
43
|
+
* `onPointerDown` unten ist deshalb schon immer ein stabiler Wrapper über
|
|
44
|
+
* `this.fsm?.` — er bleibt bis zum ersten Render ein No-op, und die Leaves
|
|
45
|
+
* hängen unverändert daran.
|
|
46
|
+
*/
|
|
47
|
+
init<H>(options: PointerDragGestureOptions<H>): void;
|
|
48
|
+
ngOnDestroy(): void;
|
|
49
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CalendarPointerGestureService, never>;
|
|
50
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CalendarPointerGestureService>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=pointer-gesture.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointer-gesture.service.d.ts","sourceRoot":"","sources":["../../../src/binding/services/pointer-gesture.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAiD,SAAS,EAAE,MAAM,eAAe,CAAC;AAGzF,OAAO,KAAK,EAAE,QAAQ,EAAsB,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;;AAE1G,qBACa,6BAA8B,YAAW,SAAS;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,GAAG,CAAmC;IAC9C,qFAAqF;IACrF,OAAO,CAAC,OAAO,CAA+B;IAE9C,kFAAkF;IAClF,QAAQ,CAAC,aAAa,GAAI,MAAM,QAAQ,EAAE,WAAW,MAAM,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM,EAAE,aAAa,MAAM,IAAI,KAAG,IAAI,CAE3H;IAEF;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;IAmBpD,WAAW,IAAI,IAAI;yCAtDR,6BAA6B;6CAA7B,6BAA6B;CAgEzC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mcp-57 Slice E — angular wiring for the ONE shared pointer-gesture FSM
|
|
3
|
+
* (`createPointerDragGesture`, calendar-headless). A VIEW component provides
|
|
4
|
+
* this service (component-level `providers: [...]`), configures it with its
|
|
5
|
+
* geometry in `ngOnInit`/`ngAfterViewInit` (closures over `this.*` stay
|
|
6
|
+
* fresh), and Angular destroys it with the view — which cancels a mid-flight
|
|
7
|
+
* gesture cleanly. Leaves inject it `@Optional()`: no providing ancestor =
|
|
8
|
+
* `null` = the leaf keeps its native-DnD fallback (a consumer view that
|
|
9
|
+
* mounts a leaf without a provider keeps a working drag). Nested providers
|
|
10
|
+
* override outer ones (AllDayRow inside WeekView), mirroring the other
|
|
11
|
+
* bindings' context nesting.
|
|
12
|
+
*/
|
|
13
|
+
import { afterNextRender, inject, Injectable, Injector } from '@angular/core';
|
|
14
|
+
import { createPointerDragGesture } from '@bimetal/calendar-headless';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
export class CalendarPointerGestureService {
|
|
17
|
+
injector = inject(Injector);
|
|
18
|
+
fsm = null;
|
|
19
|
+
/** Eine registrierte, noch nicht gefeuerte Render-Sequenz aus `init()` (s. dort). */
|
|
20
|
+
pending = null;
|
|
21
|
+
/** Leaf entry — safe to call before init (no-op until the view configured it). */
|
|
22
|
+
onPointerDown = (info, pointerId, clientX, clientY, markDragged) => {
|
|
23
|
+
this.fsm?.onPointerDown(info, pointerId, clientX, clientY, markDragged);
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* View-side: (re)configure the FSM with this view's geometry.
|
|
27
|
+
*
|
|
28
|
+
* bimetal-230 — DER FSM-BAU LIEGT IN `afterNextRender`, NICHT IM AUFRUF. Er
|
|
29
|
+
* braucht `window`, und die Views rufen `init()` aus `ngAfterViewInit` —
|
|
30
|
+
* einem Hook, den Angular beim Server-Rendering EBENFALLS ausführt. Der
|
|
31
|
+
* ssr-harness (von bimetal-229 zum ersten Mal überhaupt gefahren) zeigte
|
|
32
|
+
* `ReferenceError: window is not defined` aus genau dieser Zeile.
|
|
33
|
+
*
|
|
34
|
+
* Angular war dabei FALSCH-GRÜN: der Wurf passiert nach dem Rendern, das
|
|
35
|
+
* Markup steht also schon und geht raus — der Test war grün, der Fehler stand
|
|
36
|
+
* nur im Server-Log. svelte und vue rufen ihre Entsprechung WÄHREND des
|
|
37
|
+
* Renderings und lieferten deshalb gar nichts; nur daran fiel die Klasse auf.
|
|
38
|
+
*
|
|
39
|
+
* `afterNextRender` läuft per Vertrag nie beim Server-Rendering. Damit ist der
|
|
40
|
+
* Zugriff STRUKTURELL unmöglich statt bewacht — dieselbe Entscheidung wie in
|
|
41
|
+
* den anderen drei Bindings (react hatte sie mit dem `useEffect` immer schon).
|
|
42
|
+
* Ein `isPlatformBrowser`-Guard hätte es auch getan, wäre aber die Bauform
|
|
43
|
+
* gewesen, die dieselbe Zusage an jeder Stelle wiederholt.
|
|
44
|
+
*
|
|
45
|
+
* `onPointerDown` unten ist deshalb schon immer ein stabiler Wrapper über
|
|
46
|
+
* `this.fsm?.` — er bleibt bis zum ersten Render ein No-op, und die Leaves
|
|
47
|
+
* hängen unverändert daran.
|
|
48
|
+
*/
|
|
49
|
+
init(options) {
|
|
50
|
+
this.fsm?.destroy();
|
|
51
|
+
this.fsm = null;
|
|
52
|
+
// bimetal-230 R1 — `init()` MUSS IDEMPOTENT BLEIBEN. Synchron war es das: der
|
|
53
|
+
// Aufruf zerstörte die alte FSM und baute sofort die neue. Mit der verzögerten
|
|
54
|
+
// Sequenz gilt das nicht mehr von selbst — zwei Aufrufe VOR dem nächsten Render
|
|
55
|
+
// reihten zwei Sequenzen ein, die zweite überschriebe `this.fsm`, und die erste
|
|
56
|
+
// FSM räumte ihre `window`-Listener nie ab. Im Repo ist der Pfad heute
|
|
57
|
+
// unerreichbar (`init()` steht an genau sechs Stellen, je einmal im
|
|
58
|
+
// `ngAfterViewInit` einer View mit eigener Service-Instanz), aber dieser Service
|
|
59
|
+
// ist öffentlich exportiert (`binding/index.ts`) — ein Konsument darf ihn
|
|
60
|
+
// zweimal konfigurieren, und vor diesem Ticket durfte er das folgenlos.
|
|
61
|
+
this.pending?.destroy();
|
|
62
|
+
this.pending = afterNextRender(() => {
|
|
63
|
+
this.pending = null;
|
|
64
|
+
this.fsm = createPointerDragGesture(window, options);
|
|
65
|
+
}, { injector: this.injector });
|
|
66
|
+
}
|
|
67
|
+
ngOnDestroy() {
|
|
68
|
+
// Auch die noch nicht gefeuerte Sequenz: sonst baute sie die FSM NACH dem
|
|
69
|
+
// Destroy und niemand entfernte deren `window`-Listener mehr. (Angular räumt
|
|
70
|
+
// sie über den `DestroyRef` ohnehin ab; hier steht es, weil die Symmetrie zu
|
|
71
|
+
// `init()` sichtbar bleiben soll.)
|
|
72
|
+
this.pending?.destroy();
|
|
73
|
+
this.pending = null;
|
|
74
|
+
this.fsm?.destroy();
|
|
75
|
+
this.fsm = null;
|
|
76
|
+
}
|
|
77
|
+
static ɵfac = function CalendarPointerGestureService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CalendarPointerGestureService)(); };
|
|
78
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CalendarPointerGestureService, factory: CalendarPointerGestureService.ɵfac });
|
|
79
|
+
}
|
|
80
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CalendarPointerGestureService, [{
|
|
81
|
+
type: Injectable
|
|
82
|
+
}], null, null); })();
|
|
83
|
+
//# sourceMappingURL=pointer-gesture.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointer-gesture.service.js","sourceRoot":"","sources":["../../../src/binding/services/pointer-gesture.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAa,MAAM,eAAe,CAAC;AAEzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;;AAItE,MAAM,OAAO,6BAA6B;IACvB,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,GAAG,GAA8B,IAAI,CAAC;IAC9C,qFAAqF;IAC7E,OAAO,GAA0B,IAAI,CAAC;IAE9C,kFAAkF;IACzE,aAAa,GAAG,CAAC,IAAc,EAAE,SAAiB,EAAE,OAAe,EAAE,OAAe,EAAE,WAAuB,EAAQ,EAAE;QAC9H,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC1E,CAAC,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,CAAI,OAAqC;QAC3C,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,8EAA8E;QAC9E,+EAA+E;QAC/E,gFAAgF;QAChF,gFAAgF;QAChF,uEAAuE;QACvE,oEAAoE;QACpE,iFAAiF;QACjF,0EAA0E;QAC1E,wEAAwE;QACxE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,GAAG,GAAG,wBAAwB,CAAI,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,WAAW;QACT,0EAA0E;QAC1E,6EAA6E;QAC7E,6EAA6E;QAC7E,mCAAmC;QACnC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;uHA/DU,6BAA6B;gEAA7B,6BAA6B,WAA7B,6BAA6B;;iFAA7B,6BAA6B;cADzC,UAAU"}
|
|
@@ -5,7 +5,7 @@ import type { CalendarStore } from '@bimetal/calendar-data';
|
|
|
5
5
|
import type { CalendarRule, CalendarRuleResult } from '@bimetal/calendar-rules';
|
|
6
6
|
import { type CalendarController, EventRenderService } from '../binding/index.js';
|
|
7
7
|
import type { CalendarConfig, CalendarConfigInput, ViewConfig, CustomViewDefinition, CustomViewInputs, EventDialogMode, EventDialogInputs, AnchorRect, EventClassNameFn, EventStyleFn, EventTitleFn, EventRenderTemplateContext } from '../binding/index.js';
|
|
8
|
-
import type { CalendarControllerSnapshot, EventInteractionPolicy, CalendarHistoryChange } from '@bimetal/calendar-headless';
|
|
8
|
+
import type { CalendarControllerSnapshot, EventInteractionPolicy, CalendarHistoryChange, CalendarHistoryEntry } from '@bimetal/calendar-headless';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
/**
|
|
11
11
|
* Root calendar component: renders header, filters, the active view, and the
|
|
@@ -68,6 +68,15 @@ export declare class CalendarComponent implements OnInit, OnDestroy, OnChanges {
|
|
|
68
68
|
* `locked` for all-off). The controller enforces it AND exposes it so the views drop
|
|
69
69
|
* the matching affordance. Read at controller creation — pass a stable function. */
|
|
70
70
|
eventInteraction?: (event: CalendarEvent) => EventInteractionPolicy;
|
|
71
|
+
/** bimetal-147: macht aus der Audit-Id `event.metadata.userId` den in der
|
|
72
|
+
* eingebauten Historie angezeigten Text. Ohne den Hook zeigt die Historie die
|
|
73
|
+
* Id roh — sie erfindet nie einen Namen. Nur auf dem STANDALONE-Pfad ein Input;
|
|
74
|
+
* wer den Controller selbst besitzt, setzt ihn dort als Option. Wie
|
|
75
|
+
* `eventInteraction` bei der Controller-Erzeugung gelesen — eine STABILE
|
|
76
|
+
* Funktion übergeben; ein späterer `@Input()`-Wechsel wird NICHT nachgezogen
|
|
77
|
+
* (kein `ngOnChanges`-Pfad), auch wenn ein Input sonst Reaktivität erwarten
|
|
78
|
+
* lässt. */
|
|
79
|
+
resolveActor?: (userId: string) => string | undefined;
|
|
71
80
|
/** STANDALONE only — the bound path leaves the owned controller untouched. */
|
|
72
81
|
private binding?;
|
|
73
82
|
private bound;
|
|
@@ -94,28 +103,35 @@ export declare class CalendarComponent implements OnInit, OnDestroy, OnChanges {
|
|
|
94
103
|
/** Builtin dialog save: the controller assembles + mints + validates + saves. */
|
|
95
104
|
saveDialogFromInput(): void;
|
|
96
105
|
get mergedConfig(): CalendarConfig;
|
|
97
|
-
|
|
106
|
+
private eventsCopy;
|
|
98
107
|
get filteredEvents(): CalendarEvent[];
|
|
108
|
+
private viewConfigCopy;
|
|
109
|
+
get viewConfigList(): ViewConfig[];
|
|
99
110
|
get visibleResources(): readonly Resource[];
|
|
100
111
|
get selectedEventId(): string | null;
|
|
101
112
|
get selectedInstanceDate(): number | undefined;
|
|
102
|
-
get dialogHistory():
|
|
113
|
+
get dialogHistory(): readonly CalendarHistoryEntry[];
|
|
103
114
|
private syncEventRenderService;
|
|
104
115
|
ngOnInit(): void;
|
|
105
116
|
ngOnChanges(changes: SimpleChanges): void;
|
|
106
117
|
ngOnDestroy(): void;
|
|
107
118
|
handleViewChange(v: ViewType): void;
|
|
108
119
|
getCustomView(id: ViewType): CustomViewDefinition | undefined;
|
|
120
|
+
private customViewInputsCache;
|
|
109
121
|
get customViewInputs(): CustomViewInputs;
|
|
110
122
|
/** Component class for the custom dialog (template binding helper). */
|
|
111
123
|
get customDialogComponent(): Type<unknown> | null;
|
|
112
124
|
/** Inputs passed to the custom dialog via *ngComponentOutlet. */
|
|
125
|
+
private eventDialogInputsCache;
|
|
113
126
|
get eventDialogInputs(): EventDialogInputs | undefined;
|
|
114
127
|
handleEventClick(ev: {
|
|
115
128
|
eventId: string;
|
|
116
129
|
rect: AnchorRect;
|
|
117
130
|
instanceDate?: number;
|
|
118
131
|
}): void;
|
|
132
|
+
/** mcp-116: re-open the dialog on the series master behind the shown occurrence.
|
|
133
|
+
* The anchor stays the one the dialog already sits on — the user is not moving. */
|
|
134
|
+
handleEditSeries(eventId: string): void;
|
|
119
135
|
handleDayCellClick(ev: {
|
|
120
136
|
date: CalendarDateTime;
|
|
121
137
|
rect: AnchorRect;
|
|
@@ -152,6 +168,6 @@ export declare class CalendarComponent implements OnInit, OnDestroy, OnChanges {
|
|
|
152
168
|
resourceId: string;
|
|
153
169
|
}): void;
|
|
154
170
|
static ɵfac: i0.ɵɵFactoryDeclaration<CalendarComponent, [{ optional: true; }, null]>;
|
|
155
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent, "cal-calendar", never, { "controller": { "alias": "controller"; "required": false; }; "store": { "alias": "store"; "required": false; }; "rules": { "alias": "rules"; "required": false; }; "config": { "alias": "config"; "required": false; }; "darkMode": { "alias": "darkMode"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "showCategoryFilter": { "alias": "showCategoryFilter"; "required": false; }; "showResourceFilter": { "alias": "showResourceFilter"; "required": false; }; "showUndoRedo": { "alias": "showUndoRedo"; "required": false; }; "customViews": { "alias": "customViews"; "required": false; }; "eventDialog": { "alias": "eventDialog"; "required": false; }; "onEventClick": { "alias": "onEventClick"; "required": false; }; "onNewEventRequested": { "alias": "onNewEventRequested"; "required": false; }; "onSelectionChange": { "alias": "onSelectionChange"; "required": false; }; "onError": { "alias": "onError"; "required": false; }; "onHistoryChange": { "alias": "onHistoryChange"; "required": false; }; "onWarning": { "alias": "onWarning"; "required": false; }; "eventBadgesTpl": { "alias": "eventBadgesTpl"; "required": false; }; "eventContentTpl": { "alias": "eventContentTpl"; "required": false; }; "eventClassName": { "alias": "eventClassName"; "required": false; }; "eventStyle": { "alias": "eventStyle"; "required": false; }; "eventTitle": { "alias": "eventTitle"; "required": false; }; "eventInteraction": { "alias": "eventInteraction"; "required": false; }; }, {}, never, never, true, never>;
|
|
171
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent, "cal-calendar", never, { "controller": { "alias": "controller"; "required": false; }; "store": { "alias": "store"; "required": false; }; "rules": { "alias": "rules"; "required": false; }; "config": { "alias": "config"; "required": false; }; "darkMode": { "alias": "darkMode"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "showCategoryFilter": { "alias": "showCategoryFilter"; "required": false; }; "showResourceFilter": { "alias": "showResourceFilter"; "required": false; }; "showUndoRedo": { "alias": "showUndoRedo"; "required": false; }; "customViews": { "alias": "customViews"; "required": false; }; "eventDialog": { "alias": "eventDialog"; "required": false; }; "onEventClick": { "alias": "onEventClick"; "required": false; }; "onNewEventRequested": { "alias": "onNewEventRequested"; "required": false; }; "onSelectionChange": { "alias": "onSelectionChange"; "required": false; }; "onError": { "alias": "onError"; "required": false; }; "onHistoryChange": { "alias": "onHistoryChange"; "required": false; }; "onWarning": { "alias": "onWarning"; "required": false; }; "eventBadgesTpl": { "alias": "eventBadgesTpl"; "required": false; }; "eventContentTpl": { "alias": "eventContentTpl"; "required": false; }; "eventClassName": { "alias": "eventClassName"; "required": false; }; "eventStyle": { "alias": "eventStyle"; "required": false; }; "eventTitle": { "alias": "eventTitle"; "required": false; }; "eventInteraction": { "alias": "eventInteraction"; "required": false; }; "resolveActor": { "alias": "resolveActor"; "required": false; }; }, {}, never, never, true, never>;
|
|
156
172
|
}
|
|
157
173
|
//# sourceMappingURL=Calendar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/components/Calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAiC,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAE7J,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/components/Calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAiC,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAE7J,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAOhF,OAAO,EAEL,KAAK,kBAAkB,EACvB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,cAAc,EAAE,mBAAmB,EAAE,UAAU,EAAE,oBAAoB,EAAE,gBAAgB,EACvF,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAC9C,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,0BAA0B,EACzE,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;;AAalJ;;;;;;GAMG;AACH,qBAoKa,iBAAkB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAiFrC,kBAAkB,CAAC,EAAE,kBAAkB;IAAE,OAAO,CAAC,IAAI,CAAC;IAhFrF;;;;sFAIkF;IACzE,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,wEAAwE;IAC/D,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAM;IAC3B,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACxC,QAAQ,UAAS;IACjB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,kBAAkB,UAAS;IAC3B,kBAAkB,UAAS;IACpC;yFACqF;IAC5E,YAAY,UAAQ;IACpB,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC9C,WAAW,EAAE,eAAe,CAAuB;IACnD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxF,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3H;0EACsE;IAC7D,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACxG;;iGAE6F;IACpF,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C;qFACiF;IACxE,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACnE,qFAAqF;IAC5E,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACvE,wEAAwE;IAC/D,cAAc,CAAC,EAAE,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAClE,kEAAkE;IACzD,eAAe,CAAC,EAAE,WAAW,CAAC,0BAA0B,CAAC,CAAC;IACnE,2EAA2E;IAClE,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAC3C,mEAAmE;IAC1D,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,sEAAsE;IAC7D,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC;;;yFAGqF;IAC5E,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,sBAAsB,CAAC;IAC7E;;;;;;;iBAOa;IACJ,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAE/D,8EAA8E;IAC9E,OAAO,CAAC,OAAO,CAAC,CAA4B;IAC5C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAC,CAAa;IAC3B;sEACkE;IAClE,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,OAAO,CAAsB;IACrC,uEAAuE;IACvE,IAAI,QAAQ,IAAI,0BAA0B,CAA+B;IACzE,OAAO,iBAAW;IAClB,QAAQ,kBAAY;IACpB,UAAU,oBAAc;IAExB;;2EAEuE;IACvE,UAAU,GAAI,GAAG,aAAa,UAG3B;gBAE4B,kBAAkB,CAAC,EAAE,kBAAkB,YAAA,EAAU,IAAI,CAAC,EAAE,MAAM,YAAA;IAE7F,IAAI,IAAI,uBAA2B;IAEnC;;2DAEuD;IACvD,WAAW,GAAI,WAAW,MAAM,EAAE,gBAAgB,MAAM,UAAsD;IAE9G,iFAAiF;IACjF,mBAAmB;IAGnB,IAAI,YAAY,IAAI,cAAc,CAAiC;IAcnE,OAAO,CAAC,UAAU,CAAyE;IAC3F,IAAI,cAAc,IAAI,aAAa,EAAE,CAIpC;IACD,OAAO,CAAC,cAAc,CAAmE;IACzF,IAAI,cAAc,IAAI,UAAU,EAAE,CAIjC;IACD,IAAI,gBAAgB,IAAI,SAAS,QAAQ,EAAE,CAA2C;IACtF,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAAyD;IAC7F,IAAI,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAAsD;IASpG,IAAI,aAAa,IAAI,SAAS,oBAAoB,EAAE,CAEnD;IAED,OAAO,CAAC,sBAAsB;IAa9B,QAAQ;IAkDR,WAAW,CAAC,OAAO,EAAE,aAAa;IAsClC,WAAW;IAMX,gBAAgB,CAAC,CAAC,EAAE,QAAQ;IAK5B,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,oBAAoB,GAAG,SAAS;IAY7D,OAAO,CAAC,qBAAqB,CAA8E;IAC3G,IAAI,gBAAgB,IAAI,gBAAgB,CAiBvC;IAED,uEAAuE;IACvE,IAAI,qBAAqB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAEhD;IAED,iEAAiE;IAEjE,OAAO,CAAC,sBAAsB,CAA+E;IAC7G,IAAI,iBAAiB,IAAI,iBAAiB,GAAG,SAAS,CAgBrD;IAGD,gBAAgB,CAAC,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAIjF;wFACoF;IACpF,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAMhC,kBAAkB,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE;IAInE,uBAAuB,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE;IAI1G,uBAAuB,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE;IAI5F,eAAe,CAAC,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE;IAKhE,oBAAoB,CAAC,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAKnF,kBAAkB,CAAC,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAKrG,kBAAkB,CAAC,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;yCAzV5E,iBAAiB;2CAAjB,iBAAiB;CA6V7B"}
|