@cellarnode/ui 0.9.1 → 0.9.3
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/components/asset-list.d.ts +34 -0
- package/dist/components/asset-list.d.ts.map +1 -0
- package/dist/components/asset-list.js +34 -0
- package/dist/components/asset-list.js.map +1 -0
- package/dist/components/asset-list.stories.d.ts +20 -0
- package/dist/components/asset-list.stories.d.ts.map +1 -0
- package/dist/components/asset-list.stories.js +50 -0
- package/dist/components/asset-list.stories.js.map +1 -0
- package/dist/components/branch-overview-panel.d.ts +51 -0
- package/dist/components/branch-overview-panel.d.ts.map +1 -0
- package/dist/components/branch-overview-panel.js +48 -0
- package/dist/components/branch-overview-panel.js.map +1 -0
- package/dist/components/branch-overview-panel.stories.d.ts +16 -0
- package/dist/components/branch-overview-panel.stories.d.ts.map +1 -0
- package/dist/components/branch-overview-panel.stories.js +96 -0
- package/dist/components/branch-overview-panel.stories.js.map +1 -0
- package/dist/components/branch-resolution-modal.d.ts +31 -0
- package/dist/components/branch-resolution-modal.d.ts.map +1 -0
- package/dist/components/branch-resolution-modal.js +35 -0
- package/dist/components/branch-resolution-modal.js.map +1 -0
- package/dist/components/branch-resolution-modal.stories.d.ts +16 -0
- package/dist/components/branch-resolution-modal.stories.d.ts.map +1 -0
- package/dist/components/branch-resolution-modal.stories.js +66 -0
- package/dist/components/branch-resolution-modal.stories.js.map +1 -0
- package/dist/components/branch-resolution-modal.test.d.ts +2 -0
- package/dist/components/branch-resolution-modal.test.d.ts.map +1 -0
- package/dist/components/branch-resolution-modal.test.js +52 -0
- package/dist/components/branch-resolution-modal.test.js.map +1 -0
- package/dist/components/card-stack.d.ts +25 -0
- package/dist/components/card-stack.d.ts.map +1 -0
- package/dist/components/card-stack.js +26 -0
- package/dist/components/card-stack.js.map +1 -0
- package/dist/components/card-stack.stories.d.ts +21 -0
- package/dist/components/card-stack.stories.d.ts.map +1 -0
- package/dist/components/card-stack.stories.js +59 -0
- package/dist/components/card-stack.stories.js.map +1 -0
- package/dist/components/celebration-pulse.d.ts +21 -0
- package/dist/components/celebration-pulse.d.ts.map +1 -0
- package/dist/components/celebration-pulse.js +16 -0
- package/dist/components/celebration-pulse.js.map +1 -0
- package/dist/components/celebration-pulse.stories.d.ts +16 -0
- package/dist/components/celebration-pulse.stories.d.ts.map +1 -0
- package/dist/components/celebration-pulse.stories.js +29 -0
- package/dist/components/celebration-pulse.stories.js.map +1 -0
- package/dist/components/completed-offer-card.d.ts +34 -0
- package/dist/components/completed-offer-card.d.ts.map +1 -0
- package/dist/components/completed-offer-card.js +20 -0
- package/dist/components/completed-offer-card.js.map +1 -0
- package/dist/components/completed-offer-card.stories.d.ts +17 -0
- package/dist/components/completed-offer-card.stories.d.ts.map +1 -0
- package/dist/components/completed-offer-card.stories.js +75 -0
- package/dist/components/completed-offer-card.stories.js.map +1 -0
- package/dist/components/file-dropzone.d.ts +26 -0
- package/dist/components/file-dropzone.d.ts.map +1 -0
- package/dist/components/file-dropzone.js +49 -0
- package/dist/components/file-dropzone.js.map +1 -0
- package/dist/components/file-dropzone.stories.d.ts +21 -0
- package/dist/components/file-dropzone.stories.d.ts.map +1 -0
- package/dist/components/file-dropzone.stories.js +55 -0
- package/dist/components/file-dropzone.stories.js.map +1 -0
- package/dist/components/image-carousel.d.ts +41 -0
- package/dist/components/image-carousel.d.ts.map +1 -0
- package/dist/components/image-carousel.js +77 -0
- package/dist/components/image-carousel.js.map +1 -0
- package/dist/components/image-carousel.stories.d.ts +20 -0
- package/dist/components/image-carousel.stories.d.ts.map +1 -0
- package/dist/components/image-carousel.stories.js +62 -0
- package/dist/components/image-carousel.stories.js.map +1 -0
- package/dist/components/importer-picker-modal.d.ts +50 -0
- package/dist/components/importer-picker-modal.d.ts.map +1 -0
- package/dist/components/importer-picker-modal.js +82 -0
- package/dist/components/importer-picker-modal.js.map +1 -0
- package/dist/components/importer-picker-modal.stories.d.ts +17 -0
- package/dist/components/importer-picker-modal.stories.d.ts.map +1 -0
- package/dist/components/importer-picker-modal.stories.js +62 -0
- package/dist/components/importer-picker-modal.stories.js.map +1 -0
- package/dist/components/importer-picker-modal.test.d.ts +2 -0
- package/dist/components/importer-picker-modal.test.d.ts.map +1 -0
- package/dist/components/importer-picker-modal.test.js +51 -0
- package/dist/components/importer-picker-modal.test.js.map +1 -0
- package/dist/components/kanban-board.d.ts +19 -0
- package/dist/components/kanban-board.d.ts.map +1 -1
- package/dist/components/kanban-board.js.map +1 -1
- package/dist/components/kanban-dnd-board.d.ts +1 -1
- package/dist/components/kanban-dnd-board.d.ts.map +1 -1
- package/dist/components/kanban-dnd-board.js +52 -7
- package/dist/components/kanban-dnd-board.js.map +1 -1
- package/dist/components/kanban-dnd-board.stories.d.ts +1 -0
- package/dist/components/kanban-dnd-board.stories.d.ts.map +1 -1
- package/dist/components/kanban-dnd-board.stories.js +66 -0
- package/dist/components/kanban-dnd-board.stories.js.map +1 -1
- package/dist/components/kanban-dnd-board.test.d.ts +2 -0
- package/dist/components/kanban-dnd-board.test.d.ts.map +1 -0
- package/dist/components/kanban-dnd-board.test.js +34 -0
- package/dist/components/kanban-dnd-board.test.js.map +1 -0
- package/dist/components/offer-status-dots.d.ts +23 -0
- package/dist/components/offer-status-dots.d.ts.map +1 -0
- package/dist/components/offer-status-dots.js +34 -0
- package/dist/components/offer-status-dots.js.map +1 -0
- package/dist/components/offer-status-dots.stories.d.ts +19 -0
- package/dist/components/offer-status-dots.stories.d.ts.map +1 -0
- package/dist/components/offer-status-dots.stories.js +49 -0
- package/dist/components/offer-status-dots.stories.js.map +1 -0
- package/dist/components/product-card.d.ts +42 -0
- package/dist/components/product-card.d.ts.map +1 -0
- package/dist/components/product-card.js +20 -0
- package/dist/components/product-card.js.map +1 -0
- package/dist/components/product-card.stories.d.ts +20 -0
- package/dist/components/product-card.stories.d.ts.map +1 -0
- package/dist/components/product-card.stories.js +59 -0
- package/dist/components/product-card.stories.js.map +1 -0
- package/dist/components/product-list-row.d.ts +29 -0
- package/dist/components/product-list-row.d.ts.map +1 -0
- package/dist/components/product-list-row.js +13 -0
- package/dist/components/product-list-row.js.map +1 -0
- package/dist/components/product-list-row.stories.d.ts +19 -0
- package/dist/components/product-list-row.stories.d.ts.map +1 -0
- package/dist/components/product-list-row.stories.js +37 -0
- package/dist/components/product-list-row.stories.js.map +1 -0
- package/dist/components/sent-offer-card.d.ts +31 -0
- package/dist/components/sent-offer-card.d.ts.map +1 -0
- package/dist/components/sent-offer-card.js +23 -0
- package/dist/components/sent-offer-card.js.map +1 -0
- package/dist/components/sent-offer-card.stories.d.ts +17 -0
- package/dist/components/sent-offer-card.stories.d.ts.map +1 -0
- package/dist/components/sent-offer-card.stories.js +51 -0
- package/dist/components/sent-offer-card.stories.js.map +1 -0
- package/dist/components/view-toggle.d.ts +14 -0
- package/dist/components/view-toggle.d.ts.map +1 -0
- package/dist/components/view-toggle.js +14 -0
- package/dist/components/view-toggle.js.map +1 -0
- package/dist/components/view-toggle.stories.d.ts +20 -0
- package/dist/components/view-toggle.stories.d.ts.map +1 -0
- package/dist/components/view-toggle.stories.js +41 -0
- package/dist/components/view-toggle.stories.js.map +1 -0
- package/dist/hooks/use-celebration-pulse.d.ts +12 -0
- package/dist/hooks/use-celebration-pulse.d.ts.map +1 -0
- package/dist/hooks/use-celebration-pulse.js +28 -0
- package/dist/hooks/use-celebration-pulse.js.map +1 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/kanban-transitions.d.ts +62 -0
- package/dist/lib/kanban-transitions.d.ts.map +1 -1
- package/dist/lib/kanban-transitions.js +32 -0
- package/dist/lib/kanban-transitions.js.map +1 -1
- package/dist/lib/kanban-transitions.test.d.ts +2 -0
- package/dist/lib/kanban-transitions.test.d.ts.map +1 -0
- package/dist/lib/kanban-transitions.test.js +75 -0
- package/dist/lib/kanban-transitions.test.js.map +1 -0
- package/dist/offer/index.d.ts +3 -0
- package/dist/offer/index.d.ts.map +1 -1
- package/dist/offer/index.js +7 -0
- package/dist/offer/index.js.map +1 -1
- package/dist/offer/sensory-profile.d.ts.map +1 -1
- package/dist/offer/sensory-profile.js +1 -1
- package/dist/offer/sensory-profile.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic transition validation for kanban boards.
|
|
3
3
|
* Not tied to any specific domain — consumers define their own rules.
|
|
4
|
+
*
|
|
5
|
+
* Two flavors:
|
|
6
|
+
* 1. createTransitionValidator(rules) — boolean API, used by simple boards
|
|
7
|
+
* that only need to know "is this transition allowed?"
|
|
8
|
+
* 2. createGatedTransitionValidator(rules) — discriminated-union API, used
|
|
9
|
+
* by boards that need to distinguish between unconditionally-allowed,
|
|
10
|
+
* blocked, hard-gated (predicate check), and modal-gated transitions.
|
|
11
|
+
* See offer-branching producer journey for the canonical use case.
|
|
4
12
|
*/
|
|
5
13
|
export type TransitionRules = Record<string, string[]>;
|
|
6
14
|
export declare function createTransitionValidator(rules: TransitionRules): {
|
|
@@ -9,4 +17,58 @@ export declare function createTransitionValidator(rules: TransitionRules): {
|
|
|
9
17
|
/** Get all columns reachable from the given column */
|
|
10
18
|
getValidTargets: (from: string) => string[];
|
|
11
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* Result of evaluating a single transition. Returned by
|
|
22
|
+
* `createGatedTransitionValidator(rules).check(from, to, item)`.
|
|
23
|
+
*
|
|
24
|
+
* - "allowed": unconditional move; the consumer should call `onMove` directly.
|
|
25
|
+
* - "blocked": move is forbidden. Optional `reason` for diagnostics; the
|
|
26
|
+
* consumer should NOT show a toast or shake — the drop is silently rejected.
|
|
27
|
+
* Use this for "automatic only" columns (e.g. card moves there via a backend
|
|
28
|
+
* webhook, never via drag).
|
|
29
|
+
* - "hard-gate": move is allowed only when `check(item)` returns true. The
|
|
30
|
+
* consumer should run the check; on fail, fire a shake animation and toast
|
|
31
|
+
* with `failMessage`; on pass, call `onMove`.
|
|
32
|
+
* - "modal-gate": move opens a modal keyed by `openModalKey`. The consumer
|
|
33
|
+
* wires the modal and calls `onMove` only after the modal confirms.
|
|
34
|
+
*/
|
|
35
|
+
export type GateResult<TItem = unknown> = {
|
|
36
|
+
kind: "allowed";
|
|
37
|
+
} | {
|
|
38
|
+
kind: "blocked";
|
|
39
|
+
reason?: string;
|
|
40
|
+
} | {
|
|
41
|
+
kind: "hard-gate";
|
|
42
|
+
check: (item: TItem) => boolean;
|
|
43
|
+
failMessage: string;
|
|
44
|
+
} | {
|
|
45
|
+
kind: "modal-gate";
|
|
46
|
+
openModalKey: string;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Per-from-column map of per-to-column gate descriptors. Missing entries
|
|
50
|
+
* default to "blocked".
|
|
51
|
+
*
|
|
52
|
+
* Example:
|
|
53
|
+
* const rules: GateRules<JourneyItem> = {
|
|
54
|
+
* drafting: {
|
|
55
|
+
* ready: { kind: "hard-gate", check: (i) => i.missingFields === 0, failMessage: "..." },
|
|
56
|
+
* interested: { kind: "allowed" },
|
|
57
|
+
* },
|
|
58
|
+
* ready: {
|
|
59
|
+
* sent: { kind: "modal-gate", openModalKey: "importer-picker" },
|
|
60
|
+
* drafting: { kind: "allowed" },
|
|
61
|
+
* },
|
|
62
|
+
* };
|
|
63
|
+
*/
|
|
64
|
+
export type GateRules<TItem = unknown> = Record<string, Record<string, GateResult<TItem>>>;
|
|
65
|
+
export declare function createGatedTransitionValidator<TItem = unknown>(rules: GateRules<TItem>): {
|
|
66
|
+
/**
|
|
67
|
+
* Evaluate a transition from one column to another for a given item.
|
|
68
|
+
* Returns the gate descriptor — the consumer dispatches based on `kind`.
|
|
69
|
+
*/
|
|
70
|
+
check(from: string, to: string, _item: TItem): GateResult<TItem>;
|
|
71
|
+
/** Get all columns reachable from the given column (regardless of gate kind) */
|
|
72
|
+
getValidTargets(from: string): string[];
|
|
73
|
+
};
|
|
12
74
|
//# sourceMappingURL=kanban-transitions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanban-transitions.d.ts","sourceRoot":"","sources":["../../src/lib/kanban-transitions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"kanban-transitions.d.ts","sourceRoot":"","sources":["../../src/lib/kanban-transitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEvD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe;IAE5D,4DAA4D;oBAC5C,MAAM,MAAM,MAAM,KAAG,OAAO;IAG5C,sDAAsD;4BAC9B,MAAM,KAAG,MAAM,EAAE;EAE5C;AAID;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,CAAC,KAAK,GAAG,OAAO,IAClC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,SAAS,CAAC,KAAK,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3F,wBAAgB,8BAA8B,CAAC,KAAK,GAAG,OAAO,EAC5D,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;IAGrB;;;OAGG;gBACS,MAAM,MAAM,MAAM,SAAS,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAQhE,gFAAgF;0BAC1D,MAAM,GAAG,MAAM,EAAE;EAM1C"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic transition validation for kanban boards.
|
|
3
3
|
* Not tied to any specific domain — consumers define their own rules.
|
|
4
|
+
*
|
|
5
|
+
* Two flavors:
|
|
6
|
+
* 1. createTransitionValidator(rules) — boolean API, used by simple boards
|
|
7
|
+
* that only need to know "is this transition allowed?"
|
|
8
|
+
* 2. createGatedTransitionValidator(rules) — discriminated-union API, used
|
|
9
|
+
* by boards that need to distinguish between unconditionally-allowed,
|
|
10
|
+
* blocked, hard-gated (predicate check), and modal-gated transitions.
|
|
11
|
+
* See offer-branching producer journey for the canonical use case.
|
|
4
12
|
*/
|
|
5
13
|
export function createTransitionValidator(rules) {
|
|
6
14
|
return {
|
|
@@ -10,4 +18,28 @@ export function createTransitionValidator(rules) {
|
|
|
10
18
|
getValidTargets: (from) => rules[from] ?? [],
|
|
11
19
|
};
|
|
12
20
|
}
|
|
21
|
+
export function createGatedTransitionValidator(rules) {
|
|
22
|
+
return {
|
|
23
|
+
/**
|
|
24
|
+
* Evaluate a transition from one column to another for a given item.
|
|
25
|
+
* Returns the gate descriptor — the consumer dispatches based on `kind`.
|
|
26
|
+
*/
|
|
27
|
+
check(from, to, _item) {
|
|
28
|
+
const fromRow = rules[from];
|
|
29
|
+
if (!fromRow)
|
|
30
|
+
return { kind: "blocked" };
|
|
31
|
+
const result = fromRow[to];
|
|
32
|
+
if (!result)
|
|
33
|
+
return { kind: "blocked" };
|
|
34
|
+
return result;
|
|
35
|
+
},
|
|
36
|
+
/** Get all columns reachable from the given column (regardless of gate kind) */
|
|
37
|
+
getValidTargets(from) {
|
|
38
|
+
const fromRow = rules[from];
|
|
39
|
+
if (!fromRow)
|
|
40
|
+
return [];
|
|
41
|
+
return Object.keys(fromRow);
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
13
45
|
//# sourceMappingURL=kanban-transitions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanban-transitions.js","sourceRoot":"","sources":["../../src/lib/kanban-transitions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"kanban-transitions.js","sourceRoot":"","sources":["../../src/lib/kanban-transitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,UAAU,yBAAyB,CAAC,KAAsB;IAC9D,OAAO;QACL,4DAA4D;QAC5D,OAAO,EAAE,CAAC,IAAY,EAAE,EAAU,EAAW,EAAE,CAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK;QAEpC,sDAAsD;QACtD,eAAe,EAAE,CAAC,IAAY,EAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;KAC/D,CAAC;AACJ,CAAC;AA2CD,MAAM,UAAU,8BAA8B,CAC5C,KAAuB;IAEvB,OAAO;QACL;;;WAGG;QACH,KAAK,CAAC,IAAY,EAAE,EAAU,EAAE,KAAY;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,gFAAgF;QAChF,eAAe,CAAC,IAAY;YAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-transitions.test.d.ts","sourceRoot":"","sources":["../../src/lib/kanban-transitions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { createTransitionValidator, createGatedTransitionValidator, } from "./kanban-transitions";
|
|
3
|
+
describe("createTransitionValidator (existing API)", () => {
|
|
4
|
+
test("isValid returns true for allowed transitions", () => {
|
|
5
|
+
const v = createTransitionValidator({ a: ["b"], b: [] });
|
|
6
|
+
expect(v.isValid("a", "b")).toBe(true);
|
|
7
|
+
expect(v.isValid("a", "c")).toBe(false);
|
|
8
|
+
expect(v.isValid("b", "a")).toBe(false);
|
|
9
|
+
});
|
|
10
|
+
test("getValidTargets returns the transition list", () => {
|
|
11
|
+
const v = createTransitionValidator({ a: ["b", "c"], b: [] });
|
|
12
|
+
expect(v.getValidTargets("a")).toEqual(["b", "c"]);
|
|
13
|
+
expect(v.getValidTargets("b")).toEqual([]);
|
|
14
|
+
expect(v.getValidTargets("nonexistent")).toEqual([]);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe("createGatedTransitionValidator", () => {
|
|
18
|
+
const rules = {
|
|
19
|
+
drafting: {
|
|
20
|
+
ready: { kind: "hard-gate", check: (item) => item.missingFields === 0, failMessage: "Missing fields" },
|
|
21
|
+
},
|
|
22
|
+
ready: {
|
|
23
|
+
sent: { kind: "modal-gate", openModalKey: "importer-picker" },
|
|
24
|
+
drafting: { kind: "allowed" },
|
|
25
|
+
},
|
|
26
|
+
sent: {
|
|
27
|
+
completed: { kind: "blocked", reason: "automatic-only" },
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
test("returns 'allowed' for an unconditional transition", () => {
|
|
31
|
+
const v = createGatedTransitionValidator(rules);
|
|
32
|
+
const item = { id: "1", missingFields: 0 };
|
|
33
|
+
expect(v.check("ready", "drafting", item).kind).toBe("allowed");
|
|
34
|
+
});
|
|
35
|
+
test("returns the hard-gate descriptor for gated transitions and the check function works", () => {
|
|
36
|
+
const v = createGatedTransitionValidator(rules);
|
|
37
|
+
const completeItem = { id: "1", missingFields: 0 };
|
|
38
|
+
const incompleteItem = { id: "2", missingFields: 3 };
|
|
39
|
+
const result = v.check("drafting", "ready", completeItem);
|
|
40
|
+
expect(result.kind).toBe("hard-gate");
|
|
41
|
+
if (result.kind === "hard-gate") {
|
|
42
|
+
expect(result.check(completeItem)).toBe(true);
|
|
43
|
+
expect(result.check(incompleteItem)).toBe(false);
|
|
44
|
+
expect(result.failMessage).toBe("Missing fields");
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
test("returns 'modal-gate' with openModalKey", () => {
|
|
48
|
+
const v = createGatedTransitionValidator(rules);
|
|
49
|
+
const result = v.check("ready", "sent", { id: "1", missingFields: 0 });
|
|
50
|
+
expect(result.kind).toBe("modal-gate");
|
|
51
|
+
if (result.kind === "modal-gate") {
|
|
52
|
+
expect(result.openModalKey).toBe("importer-picker");
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
test("returns 'blocked' for explicitly blocked transitions", () => {
|
|
56
|
+
const v = createGatedTransitionValidator(rules);
|
|
57
|
+
const result = v.check("sent", "completed", { id: "1", missingFields: 0 });
|
|
58
|
+
expect(result.kind).toBe("blocked");
|
|
59
|
+
});
|
|
60
|
+
test("returns 'blocked' for unknown transitions (default)", () => {
|
|
61
|
+
const v = createGatedTransitionValidator(rules);
|
|
62
|
+
const result = v.check("drafting", "completed", { id: "1", missingFields: 0 });
|
|
63
|
+
expect(result.kind).toBe("blocked");
|
|
64
|
+
});
|
|
65
|
+
test("getValidTargets returns the keys of the from-row map", () => {
|
|
66
|
+
const v = createGatedTransitionValidator(rules);
|
|
67
|
+
expect(v.getValidTargets("ready").sort()).toEqual(["drafting", "sent"]);
|
|
68
|
+
expect(v.getValidTargets("sent")).toEqual(["completed"]);
|
|
69
|
+
});
|
|
70
|
+
test("interop: createTransitionValidator's boolean API is unchanged", () => {
|
|
71
|
+
const v = createTransitionValidator({ a: ["b"] });
|
|
72
|
+
expect(v.isValid("a", "b")).toBe(true);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=kanban-transitions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-transitions.test.js","sourceRoot":"","sources":["../../src/lib/kanban-transitions.test.ts"],"names":[],"mappings":"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"}
|
package/dist/offer/index.d.ts
CHANGED
|
@@ -26,4 +26,7 @@ export { OfferDetailHeader } from "./offer-detail-header";
|
|
|
26
26
|
export type { OfferDetailHeaderProps } from "./offer-detail-header";
|
|
27
27
|
export { OfferDetailTabs } from "./offer-detail-tabs";
|
|
28
28
|
export type { OfferDetailTabsProps, OfferTab } from "./offer-detail-tabs";
|
|
29
|
+
export { ImporterPickerModal, type ImporterPickerModalProps, type ImporterPickerImporter, type ImporterPickerMode, } from "../components/importer-picker-modal";
|
|
30
|
+
export { OffersSentPanel, type OffersSentPanelProps, type OfferBranch, } from "../components/branch-overview-panel";
|
|
31
|
+
export { FinalizeDealModal, type FinalizeDealModalProps, type FinalizeDealTerm, type FinalizeDealClosedBranch, } from "../components/branch-resolution-modal";
|
|
29
32
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/offer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,YAAY,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/offer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,YAAY,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO1E,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,GACxB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,GAC9B,MAAM,uCAAuC,CAAC"}
|
package/dist/offer/index.js
CHANGED
|
@@ -12,4 +12,11 @@ export { OrgBanner } from "./org-banner";
|
|
|
12
12
|
export { OfferDetailShell } from "./offer-detail-shell";
|
|
13
13
|
export { OfferDetailHeader } from "./offer-detail-header";
|
|
14
14
|
export { OfferDetailTabs } from "./offer-detail-tabs";
|
|
15
|
+
// ─── Offer-branching modals + slide-over (new in v0.10.x) ───────────────
|
|
16
|
+
// Internal files use "branch" / "branch-overview" / "branch-resolution"
|
|
17
|
+
// terminology — exports use the user-facing "offer" naming per the
|
|
18
|
+
// terminology contract.
|
|
19
|
+
export { ImporterPickerModal, } from "../components/importer-picker-modal";
|
|
20
|
+
export { OffersSentPanel, } from "../components/branch-overview-panel";
|
|
21
|
+
export { FinalizeDealModal, } from "../components/branch-resolution-modal";
|
|
15
22
|
//# sourceMappingURL=index.js.map
|
package/dist/offer/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/offer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AASzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/offer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AASzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,2EAA2E;AAC3E,wEAAwE;AACxE,mEAAmE;AACnE,wBAAwB;AAExB,OAAO,EACL,mBAAmB,GAIpB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,eAAe,GAGhB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,iBAAiB,GAIlB,MAAM,uCAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensory-profile.d.ts","sourceRoot":"","sources":["../../src/offer/sensory-profile.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,CAAC;CAChE;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACxF,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6CD,wBAAgB,cAAc,CAAC,EAC7B,cAAc,EACd,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,GACV,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"sensory-profile.d.ts","sourceRoot":"","sources":["../../src/offer/sensory-profile.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,CAAC;CAChE;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACxF,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6CD,wBAAgB,cAAc,CAAC,EAC7B,cAAc,EACd,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,GACV,EAAE,mBAAmB,kDA8DrB"}
|
|
@@ -64,7 +64,7 @@ export function SensoryProfile({ sensoryDetails, stageLabels, fieldLabels, field
|
|
|
64
64
|
const fieldDef = stageFieldDefs?.[fieldKey];
|
|
65
65
|
const displayLabel = stageFieldLabels?.[fieldKey] ?? fieldDef?.label ?? capitalize(fieldKey);
|
|
66
66
|
const { isArray, items } = resolveDisplayValue(value, fieldDef);
|
|
67
|
-
return (_jsxs("div", { className: "grid gap-0.5", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: displayLabel }), isArray ? (_jsx("div", { className: "flex flex-wrap gap-1", children: items.map((item, i) => (_jsx("span", { className: "inline-flex rounded-full bg-primary/10 px-2 py-0.5 text-xs text-foreground", children: item }, i))) })) : (_jsx("span", { className: "text-sm text-foreground", children: items[0] }))] }, fieldKey));
|
|
67
|
+
return (_jsxs("div", { className: "grid gap-0.5", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: displayLabel }), isArray ? (_jsx("div", { className: "flex flex-wrap gap-1", children: items.map((item, i) => (_jsx("span", { className: "inline-flex rounded-full bg-primary/10 px-2 py-0.5 text-xs text-foreground", children: item }, `${item}-${i}`))) })) : (_jsx("span", { className: "text-sm text-foreground", children: items[0] }))] }, fieldKey));
|
|
68
68
|
}) })] }, stageKey));
|
|
69
69
|
}) }));
|
|
70
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensory-profile.js","sourceRoot":"","sources":["../../src/offer/sensory-profile.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sensory-profile.js","sourceRoot":"","sources":["../../src/offer/sensory-profile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAyBlC,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,UAAU,CAAC,KAA2C;IAC7D,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,SAAS,CAAC,MAAmE;IACpF,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAA2C,EAC3C,QAAqC;IAErC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAExD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,QAAQ,EAAE,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,mDAAmD;IACnD,IAAI,QAAQ,EAAE,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,cAAc,EACd,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,GACW;IACpB,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAExF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YACxC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;YACjC,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACzB,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,gBAAgB,GAAG,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC9D,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACjC,uDAAuD;gBACvD,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,YAAY;oBAAE,OAAO,KAAK,CAAC;gBAC5D,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEtC,OAAO,CACL,eAAoB,SAAS,EAAC,YAAY,aACxC,aAAI,SAAS,EAAC,uCAAuC,YAAE,UAAU,GAAM,EACvE,cAAK,SAAS,EAAC,iDAAiD,YAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE;4BACjC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC;4BAC5C,MAAM,YAAY,GAChB,gBAAgB,EAAE,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;4BAC1E,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;4BAEhE,OAAO,CACL,eAAoB,SAAS,EAAC,cAAc,aAC1C,eAAM,SAAS,EAAC,+BAA+B,YAAE,YAAY,GAAQ,EACpE,OAAO,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAC,sBAAsB,YAClC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,eAGE,SAAS,EAAC,4EAA4E,YAErF,IAAI,IAHA,GAAG,IAAI,IAAI,CAAC,EAAE,CAId,CACR,CAAC,GACE,CACP,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,yBAAyB,YAAE,KAAK,CAAC,CAAC,CAAC,GAAQ,CAC5D,KAhBO,QAAQ,CAiBZ,CACP,CAAC;wBACJ,CAAC,CAAC,GACE,KA9BE,QAAQ,CA+BZ,CACP,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|