@judo/actions 0.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/LICENSE +277 -0
- package/README.md +257 -0
- package/dist/api/constants.d.ts +27 -0
- package/dist/api/constants.d.ts.map +1 -0
- package/dist/api/index.d.ts +9 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/judo-rest-api.d.ts +262 -0
- package/dist/api/judo-rest-api.d.ts.map +1 -0
- package/dist/api/model-converters.d.ts +29 -0
- package/dist/api/model-converters.d.ts.map +1 -0
- package/dist/api/path-builder.d.ts +50 -0
- package/dist/api/path-builder.d.ts.map +1 -0
- package/dist/api/transfer-deserializer.d.ts +46 -0
- package/dist/api/transfer-deserializer.d.ts.map +1 -0
- package/dist/api/transfer-serializer.d.ts +85 -0
- package/dist/api/transfer-serializer.d.ts.map +1 -0
- package/dist/api/types.d.ts +278 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/handlers/autocomplete/autocomplete-handlers.d.ts +20 -0
- package/dist/handlers/autocomplete/autocomplete-handlers.d.ts.map +1 -0
- package/dist/handlers/autocomplete/index.d.ts +2 -0
- package/dist/handlers/autocomplete/index.d.ts.map +1 -0
- package/dist/handlers/crud/crud-handlers.d.ts +76 -0
- package/dist/handlers/crud/crud-handlers.d.ts.map +1 -0
- package/dist/handlers/crud/index.d.ts +2 -0
- package/dist/handlers/crud/index.d.ts.map +1 -0
- package/dist/handlers/form/form-handlers.d.ts +28 -0
- package/dist/handlers/form/form-handlers.d.ts.map +1 -0
- package/dist/handlers/form/index.d.ts +2 -0
- package/dist/handlers/form/index.d.ts.map +1 -0
- package/dist/handlers/index.d.ts +10 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/navigation/index.d.ts +2 -0
- package/dist/handlers/navigation/index.d.ts.map +1 -0
- package/dist/handlers/navigation/navigation-handlers.d.ts +23 -0
- package/dist/handlers/navigation/navigation-handlers.d.ts.map +1 -0
- package/dist/handlers/operation/index.d.ts +2 -0
- package/dist/handlers/operation/index.d.ts.map +1 -0
- package/dist/handlers/operation/operation-handlers.d.ts +43 -0
- package/dist/handlers/operation/operation-handlers.d.ts.map +1 -0
- package/dist/handlers/other/index.d.ts +2 -0
- package/dist/handlers/other/index.d.ts.map +1 -0
- package/dist/handlers/other/other-handlers.d.ts +10 -0
- package/dist/handlers/other/other-handlers.d.ts.map +1 -0
- package/dist/handlers/relation/index.d.ts +2 -0
- package/dist/handlers/relation/index.d.ts.map +1 -0
- package/dist/handlers/relation/relation-handlers.d.ts +49 -0
- package/dist/handlers/relation/relation-handlers.d.ts.map +1 -0
- package/dist/handlers/selector/index.d.ts +2 -0
- package/dist/handlers/selector/index.d.ts.map +1 -0
- package/dist/handlers/selector/selector-handlers.d.ts +30 -0
- package/dist/handlers/selector/selector-handlers.d.ts.map +1 -0
- package/dist/handlers/table/index.d.ts +2 -0
- package/dist/handlers/table/index.d.ts.map +1 -0
- package/dist/handlers/table/table-handlers.d.ts +18 -0
- package/dist/handlers/table/table-handlers.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/use-action-dispatcher.d.ts +61 -0
- package/dist/hooks/use-action-dispatcher.d.ts.map +1 -0
- package/dist/hooks/use-action-handler.d.ts +29 -0
- package/dist/hooks/use-action-handler.d.ts.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1427 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle/execute-with-lifecycle.d.ts +20 -0
- package/dist/lifecycle/execute-with-lifecycle.d.ts.map +1 -0
- package/dist/lifecycle/index.d.ts +2 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/provider/api-context.d.ts +30 -0
- package/dist/provider/api-context.d.ts.map +1 -0
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/registry/action-handler-registry.d.ts +11 -0
- package/dist/registry/action-handler-registry.d.ts.map +1 -0
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/types-BsQmyhQI.js +14 -0
- package/dist/types-BsQmyhQI.js.map +1 -0
- package/dist/types-CbA9-fcJ.js +2 -0
- package/dist/types.d.ts +260 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/handlers/selector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,4BAA4B,EAC5B,+BAA+B,EAC/B,+BAA+B,EAC/B,0CAA0C,EAC1C,6BAA6B,GAC7B,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ActionHandlerHookWithMeta } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Handle selector open for single selection - hook factory.
|
|
4
|
+
* Navigation action - no REST call.
|
|
5
|
+
*/
|
|
6
|
+
export declare const useOpenSelectorActionHandler: ActionHandlerHookWithMeta;
|
|
7
|
+
/**
|
|
8
|
+
* Handle selector open for add operation (multi-select) - hook factory.
|
|
9
|
+
* Navigation action - no REST call.
|
|
10
|
+
*/
|
|
11
|
+
export declare const useOpenAddSelectorActionHandler: ActionHandlerHookWithMeta;
|
|
12
|
+
/**
|
|
13
|
+
* Handle selector open for set operation (single-select) - hook factory.
|
|
14
|
+
* Navigation action - no REST call.
|
|
15
|
+
*/
|
|
16
|
+
export declare const useOpenSetSelectorActionHandler: ActionHandlerHookWithMeta;
|
|
17
|
+
/**
|
|
18
|
+
* Handle selector open for operation input - hook factory.
|
|
19
|
+
* Navigation action - no REST call.
|
|
20
|
+
* Registers an onClose callback to refresh the caller page after a
|
|
21
|
+
* successful operation, but only when the caller is not in edit mode.
|
|
22
|
+
*/
|
|
23
|
+
export declare const useOpenOperationInputSelectorActionHandler: ActionHandlerHookWithMeta;
|
|
24
|
+
/**
|
|
25
|
+
* Handle selector range query (fetch data for selector) - hook factory.
|
|
26
|
+
* Fetches range data for selector table via REST API.
|
|
27
|
+
* Supports both legacy callback mode and API mode.
|
|
28
|
+
*/
|
|
29
|
+
export declare const useSelectorRangeActionHandler: ActionHandlerHookWithMeta;
|
|
30
|
+
//# sourceMappingURL=selector-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-handlers.d.ts","sourceRoot":"","sources":["../../../src/handlers/selector/selector-handlers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,yBAAyB,EAA6B,MAAM,aAAa,CAAC;AAkChG;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAmBnC,yBAAyB,CAAC;AAGhC;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAoBtC,yBAAyB,CAAC;AAGhC;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAoBtC,yBAAyB,CAAC;AAGhC;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,EA6BjD,yBAAyB,CAAC;AAGhC;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAuCpC,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/handlers/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ActionHandlerHookWithMeta } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Handle filter action (opens filter dialog) - hook factory.
|
|
4
|
+
* Filter is primarily a UI operation - signals filter intent.
|
|
5
|
+
*/
|
|
6
|
+
export declare const useFilterActionHandler: ActionHandlerHookWithMeta;
|
|
7
|
+
/**
|
|
8
|
+
* Handle export action - hook factory.
|
|
9
|
+
* Exports relation data as a downloadable file via REST API.
|
|
10
|
+
* Supports both legacy callback mode and API mode.
|
|
11
|
+
*/
|
|
12
|
+
export declare const useExportActionHandler: ActionHandlerHookWithMeta;
|
|
13
|
+
/**
|
|
14
|
+
* Handle inline row creation in table - hook factory.
|
|
15
|
+
* Inline creation is primarily a UI operation.
|
|
16
|
+
*/
|
|
17
|
+
export declare const useInlineCreateRowActionHandler: ActionHandlerHookWithMeta;
|
|
18
|
+
//# sourceMappingURL=table-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-handlers.d.ts","sourceRoot":"","sources":["../../../src/handlers/table/table-handlers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,yBAAyB,EAA6B,MAAM,aAAa,CAAC;AA4BhG;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAO7B,yBAAyB,CAAC;AAGhC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAoC7B,yBAAyB,CAAC;AAGhC;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAMtC,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ActionLifecycle } from '@judo/model-api';
|
|
2
|
+
import { JudoRestApi } from '../api/judo-rest-api';
|
|
3
|
+
import { Action, DataStore, TransferData, ModelRegistry, NavigationContext, NotificationService } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Options for useActionDispatcher hook.
|
|
6
|
+
*/
|
|
7
|
+
export interface UseActionDispatcherOptions {
|
|
8
|
+
/** Navigation context */
|
|
9
|
+
navigation: NavigationContext;
|
|
10
|
+
/** Data store */
|
|
11
|
+
data: DataStore;
|
|
12
|
+
/** Model registry */
|
|
13
|
+
registry: ModelRegistry;
|
|
14
|
+
/** JUDO REST API client (optional - enables API-mode handlers) */
|
|
15
|
+
api?: JudoRestApi | null;
|
|
16
|
+
/** Current transfer data */
|
|
17
|
+
transfer?: TransferData;
|
|
18
|
+
/** Selected rows for bulk operations */
|
|
19
|
+
selectedRows?: TransferData[];
|
|
20
|
+
/** Dialog closer for form actions */
|
|
21
|
+
closeDialog?: () => void;
|
|
22
|
+
/** Notification service for showing toasts */
|
|
23
|
+
notifications?: NotificationService;
|
|
24
|
+
/** Additional context properties */
|
|
25
|
+
additionalContext?: Record<string, unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Resolved action lifecycle overrides for the current page.
|
|
28
|
+
* Key: action sourceId, Value: lifecycle overrides.
|
|
29
|
+
* Typically provided by PageActionOverridesProvider via useResolvedPageActionOverrides().
|
|
30
|
+
*/
|
|
31
|
+
actionOverrides?: Record<string, Partial<ActionLifecycle>> | null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Result of useActionDispatcher hook.
|
|
35
|
+
*/
|
|
36
|
+
export interface UseActionDispatcherResult {
|
|
37
|
+
/** Dispatch an action, optionally with context overrides */
|
|
38
|
+
dispatch: (action: Action, contextOverrides?: Record<string, unknown>) => Promise<void>;
|
|
39
|
+
/** Check if an action can be handled */
|
|
40
|
+
canHandle: (action: Action) => boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Hook for dispatching actions to registered handlers.
|
|
44
|
+
* Uses hook factory pattern - handlers are resolved and called as hooks.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```tsx
|
|
48
|
+
* const { dispatch } = useActionDispatcher({
|
|
49
|
+
* navigation,
|
|
50
|
+
* data,
|
|
51
|
+
* registry,
|
|
52
|
+
* transfer: currentTransfer,
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* const handleClick = async () => {
|
|
56
|
+
* await dispatch(saveAction);
|
|
57
|
+
* };
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function useActionDispatcher(options: UseActionDispatcherOptions): UseActionDispatcherResult;
|
|
61
|
+
//# sourceMappingURL=use-action-dispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-action-dispatcher.d.ts","sourceRoot":"","sources":["../../src/hooks/use-action-dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEvH;;GAEG;AACH,MAAM,WAAW,0BAA0B;IAC1C,yBAAyB;IACzB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,iBAAiB;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,qBAAqB;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,kEAAkE;IAClE,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,wCAAwC;IACxC,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC,4DAA4D;IAC5D,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CAiElG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Action, ActionHandlerFn } from '@judo/model-api';
|
|
2
|
+
/**
|
|
3
|
+
* Hook to get the handler for an action.
|
|
4
|
+
*
|
|
5
|
+
* @param action - The Action to get handler for
|
|
6
|
+
* @returns Handler function to execute the action
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* function ActionButton({ action }: { action: Action }) {
|
|
11
|
+
* const handler = useActionHandler(action);
|
|
12
|
+
*
|
|
13
|
+
* const handleClick = async () => {
|
|
14
|
+
* await handler({ transfer: currentTransfer });
|
|
15
|
+
* };
|
|
16
|
+
*
|
|
17
|
+
* return <Button onClick={handleClick}>{action.label}</Button>;
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function useActionHandler(action: Action): ActionHandlerFn;
|
|
22
|
+
/**
|
|
23
|
+
* Check if a handler exists for the given action.
|
|
24
|
+
*
|
|
25
|
+
* @param action - The Action to check
|
|
26
|
+
* @returns True if a handler exists
|
|
27
|
+
*/
|
|
28
|
+
export declare function hasActionHandler(action: Action): boolean;
|
|
29
|
+
//# sourceMappingURL=use-action-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-action-handler.d.ts","sourceRoot":"","sources":["../../src/hooks/use-action-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAI/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAchE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type { ActionType, ActionDefinition, Action, TransferData, NavigationContext, DataStore, ModelRegistry, ValidationContext, CreateDialogContext, TypedActionHandlerContext, ActionHandlerFn, ActionHandlerHook, ActionHandlerHookWithMeta, ActionHandlerFactoryProperties, BuiltInActionHandlerFactoryProperties, } from './types';
|
|
2
|
+
export { ACTION_HANDLER_FACTORY } from './types';
|
|
3
|
+
export * from './handlers/index';
|
|
4
|
+
export { ApiProvider, useApi, type ApiContextType, type ApiProviderProps } from './provider/index';
|
|
5
|
+
export { useActionDispatcher, useActionHandler, hasActionHandler, type UseActionDispatcherOptions, type UseActionDispatcherResult, } from './hooks/index';
|
|
6
|
+
export { JudoRestApi, createJudoRestApi, getPathForActor, getRelationPath, getClassPath, getMutationRelationPath, getOperationPath, HEADER_SIGNED_IDENTIFIER, HEADER_MASK, HEADER_MARK_SELECTED_RANGE_ITEMS, HEADER_TOKEN, DEFAULT_COMMAND_MASK, SUFFIX_TEMPLATE, SUFFIX_GET, SUFFIX_UPDATE, SUFFIX_VALIDATE, SUFFIX_DELETE, SUFFIX_LIST, SUFFIX_RANGE, SUFFIX_CREATE, SUFFIX_SET, SUFFIX_UNSET, SUFFIX_ADD, SUFFIX_REMOVE, SUFFIX_EXPORT, } from './api/index';
|
|
7
|
+
export type { JudoRestApiConfig, JudoRestResponse, QueryCustomizer, TransferStored, StrictTransferStored, StrictTransferData, RangeRequestBody, HttpMethod, ResponseType, DeserializationType, ServiceType, ResponseDeserializerConfig, TransferSerializer, TransferDeserializer, TemporalFieldType, TemporalFieldRegistry, FeedbackItem, DialogResult, OnDialogSubmit, OnDialogValidate, } from './api/index';
|
|
8
|
+
export { ValidationError } from './api/index';
|
|
9
|
+
export { createModelAwareSerializer, serializeTemporalValue } from './api/index';
|
|
10
|
+
export { createModelAwareDeserializer, deserializeTemporalValue, parseLocalDate } from './api/index';
|
|
11
|
+
export { getActionHandler, hasActionHandler as hasActionHandlerRegistry } from './registry/index';
|
|
12
|
+
export { executeWithLifecycle } from './lifecycle/index';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACX,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,8BAA8B,EAC9B,qCAAqC,GACrC,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAGjD,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGnG,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC9B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,WAAW,EACX,gCAAgC,EAChC,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,aAAa,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAEhB,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,WAAW,EAEX,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EAEpB,iBAAiB,EACjB,qBAAqB,EAErB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,gBAAgB,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGrG,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAGlG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|