@astrato-io/visualizations 0.0.0-stage → 0.6.4

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.
Files changed (145) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE +93 -0
  3. package/README.md +843 -2
  4. package/THIRD_PARTY_NOTICES.md +8387 -0
  5. package/VISUALIZATION_DEFINITIONS.md +2378 -0
  6. package/chunks/LinearProgress-CUZ0D8_t.js +253 -0
  7. package/chunks/Radio-Ciu-F4CU.js +957 -0
  8. package/chunks/ToggleButton-BCJc3Jlc.js +153 -0
  9. package/chunks/_baseFlatten-DPXPOrea.js +7076 -0
  10. package/chunks/accessors-DemrDevR.js +128 -0
  11. package/chunks/app-filter-bar.compiler-j_CVoWTa.js +55 -0
  12. package/chunks/bar.compiler-oqaPzIut.js +370 -0
  13. package/chunks/color-settings-ZIvgNTq1.js +10 -0
  14. package/chunks/coloring-C16AUZEi.js +663 -0
  15. package/chunks/data-item-resolution-1lvYB5ln.js +53 -0
  16. package/chunks/debounce-fn-CUixuz45.js +7 -0
  17. package/chunks/escobar-BGqT1EsE.js +34580 -0
  18. package/chunks/event-bus-KiSiCJrC.js +2683 -0
  19. package/chunks/events-WZut5Ow6.js +4 -0
  20. package/chunks/extend-BKUkc4_i.js +37 -0
  21. package/chunks/filter.compiler-CuLtc_02.js +60 -0
  22. package/chunks/filtering-Yq4DEa0t.js +953 -0
  23. package/chunks/gauge-target-type-BkKXAqkX.js +4 -0
  24. package/chunks/grouping-type-BX_9Ix5q.js +3 -0
  25. package/chunks/interfaces-VUY4_yVO.js +8742 -0
  26. package/chunks/line-settings-DfYTUyPz.js +4 -0
  27. package/chunks/line.compiler-BpA_6Tc7.js +188 -0
  28. package/chunks/metadata-CPXdYoln.js +28 -0
  29. package/chunks/number.compiler-DbkWcG4S.js +44 -0
  30. package/chunks/pie-uv42Eqal.js +10 -0
  31. package/chunks/range-DrzdfBX4.js +22 -0
  32. package/chunks/registry-CExpGJ1N.js +920 -0
  33. package/chunks/requirements-DNhuShLS.js +6 -0
  34. package/chunks/rolldown-runtime-DleVn1XH.js +28 -0
  35. package/chunks/set-coloring-datafield-B3uIS1Pe.js +8 -0
  36. package/chunks/shared-CKDL4hx9.js +1171 -0
  37. package/chunks/src-BC7cGcJ-.js +2024 -0
  38. package/chunks/src-BOS6SqkZ.js +67 -0
  39. package/chunks/src-C0LgoUWY.js +26105 -0
  40. package/chunks/src-Cum_2NLV.js +12145 -0
  41. package/chunks/src-D9XogOrc.js +422 -0
  42. package/chunks/src-Dun_jXtz.js +10295 -0
  43. package/chunks/src-DvX5LU9T.js +14742 -0
  44. package/chunks/standalone-87YV_m9n.js +687 -0
  45. package/chunks/standalone-BDCwI6Hn.js +4619 -0
  46. package/chunks/standalone-BH5NqDwp.js +1763 -0
  47. package/chunks/standalone-BLVAWLNJ.js +385 -0
  48. package/chunks/standalone-BPomtAVs.js +2 -0
  49. package/chunks/standalone-BXyBcUOQ.js +2 -0
  50. package/chunks/standalone-BYm1UjLr.js +140 -0
  51. package/chunks/standalone-BllF4rDp.js +383 -0
  52. package/chunks/standalone-BmfMt74U.js +726 -0
  53. package/chunks/standalone-BqWyrnZI.js +281 -0
  54. package/chunks/standalone-C85u7U6I.js +340 -0
  55. package/chunks/standalone-CCNtaJ7s.js +741 -0
  56. package/chunks/standalone-CDQnr6qT.js +345 -0
  57. package/chunks/standalone-CNyNHKVx.js +674 -0
  58. package/chunks/standalone-CY57qwZ-.js +1129 -0
  59. package/chunks/standalone-CZynjFG7.js +12979 -0
  60. package/chunks/standalone-D5vnf-9y.js +3943 -0
  61. package/chunks/standalone-DFPva_ku.js +299 -0
  62. package/chunks/standalone-DQxxNwF8.js +675 -0
  63. package/chunks/standalone-DS9T0FZ-.js +830 -0
  64. package/chunks/standalone-Dx3MLlrO.js +512 -0
  65. package/chunks/standalone-DzixzZAL.js +411 -0
  66. package/chunks/standalone-QJ1kKMnO.js +6 -0
  67. package/chunks/standalone-jiz0L2Dg.js +3855 -0
  68. package/chunks/standalone-lBm9hQ-q.js +179 -0
  69. package/chunks/standalone-rJ45Zfl1.js +68 -0
  70. package/chunks/stroke-dash-UgMEcCS4.js +6 -0
  71. package/chunks/table.compiler-BrXkm4Fz.js +213 -0
  72. package/chunks/toInteger-DVZr-D1j.js +11 -0
  73. package/chunks/treemap-x_zmJoG7.js +23 -0
  74. package/chunks/typeof-CJDtcySz.js +13 -0
  75. package/chunks/types-dVVCsDWD.js +4 -0
  76. package/chunks/ui-D1HQNIBy.js +54039 -0
  77. package/chunks/url-utils-B17gj_mr.js +5501 -0
  78. package/chunks/useFieldName-oqQ3bvnO.js +7 -0
  79. package/chunks/utils-Ba9T0TqC.js +31097 -0
  80. package/chunks/view-CLqWMV7Z.js +156 -0
  81. package/definitions.js +3 -0
  82. package/docs/operations/astrato-app-filter-bar.md +161 -0
  83. package/docs/operations/bar.md +7050 -0
  84. package/docs/operations/combo.md +5825 -0
  85. package/docs/operations/date-picker.md +644 -0
  86. package/docs/operations/distribution-gauge.md +3218 -0
  87. package/docs/operations/dot.md +5662 -0
  88. package/docs/operations/filter.md +1507 -0
  89. package/docs/operations/gauge.md +3452 -0
  90. package/docs/operations/heatMap.md +6026 -0
  91. package/docs/operations/histogram.md +1870 -0
  92. package/docs/operations/iframe.md +56 -0
  93. package/docs/operations/image.md +177 -0
  94. package/docs/operations/index.md +46 -0
  95. package/docs/operations/line.md +6468 -0
  96. package/docs/operations/number.md +3969 -0
  97. package/docs/operations/pie.md +6089 -0
  98. package/docs/operations/radar.md +4646 -0
  99. package/docs/operations/sankey.md +3210 -0
  100. package/docs/operations/scatter.md +6075 -0
  101. package/docs/operations/shape.md +315 -0
  102. package/docs/operations/simpleTextObject.md +706 -0
  103. package/docs/operations/slider.md +230 -0
  104. package/docs/operations/table.md +8790 -0
  105. package/docs/operations/tree.md +2874 -0
  106. package/docs/operations/treemap.md +3619 -0
  107. package/docs/operations/waterfall.md +2938 -0
  108. package/docs/operations/word-cloud.md +3071 -0
  109. package/getters.js +18 -0
  110. package/index.js +1183 -0
  111. package/metadata.js +20 -0
  112. package/operations.js +64 -0
  113. package/package.json +191 -4
  114. package/src/definitions/index.d.ts +2 -0
  115. package/src/definitions/shared/index.d.ts +5 -0
  116. package/src/definitions/shared/lib/available-fields.d.ts +36 -0
  117. package/src/definitions/shared/lib/compilers/index.d.ts +7 -0
  118. package/src/definitions/shared/lib/registry/compile.d.ts +2 -0
  119. package/src/definitions/shared/lib/registry/descriptor-registry.d.ts +587 -0
  120. package/src/definitions/shared/lib/registry/index.d.ts +3 -0
  121. package/src/definitions/shared/lib/registry/validation.d.ts +3 -0
  122. package/src/definitions/shared/lib/schemas/app-filter-bar.schema.d.ts +22 -0
  123. package/src/definitions/shared/lib/schemas/bar.schema.d.ts +73 -0
  124. package/src/definitions/shared/lib/schemas/broad-chart.schema.d.ts +68 -0
  125. package/src/definitions/shared/lib/schemas/common.schema.d.ts +304 -0
  126. package/src/definitions/shared/lib/schemas/filter.schema.d.ts +22 -0
  127. package/src/definitions/shared/lib/schemas/index.d.ts +9 -0
  128. package/src/definitions/shared/lib/schemas/line.schema.d.ts +72 -0
  129. package/src/definitions/shared/lib/schemas/number.schema.d.ts +21 -0
  130. package/src/definitions/shared/lib/schemas/object.schema.d.ts +215 -0
  131. package/src/definitions/shared/lib/schemas/table.schema.d.ts +458 -0
  132. package/src/definitions/shared/lib/types/compilation.types.d.ts +36 -0
  133. package/src/definitions/shared/lib/types/definition.types.d.ts +2 -0
  134. package/src/definitions/shared/lib/types/descriptor.types.d.ts +39 -0
  135. package/src/definitions/shared/lib/types/index.d.ts +3 -0
  136. package/src/getters/index.d.ts +30 -0
  137. package/src/index.d.ts +4 -0
  138. package/src/metadata/index.d.ts +4 -0
  139. package/src/operations/index.d.ts +30 -0
  140. package/src/registry/index.d.ts +6 -0
  141. package/src/runtime/index.d.ts +2 -0
  142. package/src/types.d.ts +307 -0
  143. package/src/visualization-catalog.d.ts +82 -0
  144. package/src/web-components/index.d.ts +12 -0
  145. package/styles.css +2 -0
@@ -0,0 +1,39 @@
1
+ import type { z } from 'zod';
2
+ import type { CompileVisualizationDefinitionInput, CompileVisualizationDefinitionResult } from './compilation.types';
3
+ import type { VisualizationDefinition } from './definition.types';
4
+ export type VisualizationDefinitionFeature = 'axes' | 'axis-bands' | 'axis-range' | 'axis-scale' | 'conditional-coloring' | 'content' | 'data-labels' | 'data-points' | 'dimensions' | 'display-mode' | 'filter-settings' | 'filters' | 'legend' | 'layout' | 'measure-axis' | 'measures' | 'input-settings' | 'selection-settings' | 'object-settings' | 'orientation' | 'query-limit' | 'sorting' | 'series-type' | 'table-structure' | 'top-n' | 'totals' | 'value-formatting';
5
+ export interface VisualizationDefinitionDocumentation {
6
+ /**
7
+ * Plain-language semantic rules and observable behavior that are not fully represented by JSON Schema.
8
+ * These are supplied to Nash together with the selected schema so generated definitions do not rely on
9
+ * unsupported combinations or incorrect assumptions about how the visualization interprets its data.
10
+ */
11
+ constraints: readonly string[];
12
+ /**
13
+ * Human-readable minimum data shape for the visualization, such as the required number and roles of
14
+ * dimensions and measures. The definition schema and compiler remain the validation source of truth.
15
+ */
16
+ dataRequirements: readonly string[];
17
+ /** Short explanation of the visualization's purpose and the behavior covered by its definition contract. */
18
+ summary: string;
19
+ /** Human-readable visualization name used in generated reference documentation and Nash discovery metadata. */
20
+ title: string;
21
+ }
22
+ export interface VisualizationDefinitionDescriptor<TDefinition extends VisualizationDefinition = VisualizationDefinition> {
23
+ compile(input: CompileVisualizationDefinitionInput): Promise<CompileVisualizationDefinitionResult>;
24
+ documentation: VisualizationDefinitionDocumentation;
25
+ examples: readonly TDefinition[];
26
+ jsonSchema: Record<string, unknown>;
27
+ schema: z.ZodType<TDefinition>;
28
+ supportedFeatures: readonly VisualizationDefinitionFeature[];
29
+ type: TDefinition['type'];
30
+ version: TDefinition['version'];
31
+ }
32
+ export interface SerializableVisualizationDefinitionDescriptor {
33
+ documentation: VisualizationDefinitionDocumentation;
34
+ examples: readonly VisualizationDefinition[];
35
+ jsonSchema: Record<string, unknown>;
36
+ supportedFeatures: readonly VisualizationDefinitionFeature[];
37
+ type: VisualizationDefinition['type'];
38
+ version: VisualizationDefinition['version'];
39
+ }
@@ -0,0 +1,3 @@
1
+ export * from './compilation.types';
2
+ export * from './definition.types';
3
+ export * from './descriptor.types';
@@ -0,0 +1,30 @@
1
+ import type { StandaloneVSpecChange, VisualizationInstance, VisualizationRegistry, VisualizationRuntime } from '../types';
2
+ export interface VisualizationGetterVariable {
3
+ id: string;
4
+ name: string;
5
+ }
6
+ export interface VisualizationGetterRequest {
7
+ name: string;
8
+ [key: string]: unknown;
9
+ }
10
+ export interface VisualizationChangeQueueItem {
11
+ id: string;
12
+ change: StandaloneVSpecChange;
13
+ timestamp: number;
14
+ }
15
+ export interface ProcessGetterRequestsInput {
16
+ instance: VisualizationInstance;
17
+ getterRequests: VisualizationGetterRequest[];
18
+ variables?: VisualizationGetterVariable[];
19
+ changesQueue?: VisualizationChangeQueueItem[];
20
+ registry?: VisualizationRegistry;
21
+ }
22
+ export interface ProcessGetterRequestsResult {
23
+ results: unknown[];
24
+ }
25
+ export interface ProcessRuntimeGetterRequestsInput extends Omit<ProcessGetterRequestsInput, 'instance'> {
26
+ instanceId: string;
27
+ runtime: VisualizationRuntime;
28
+ }
29
+ export declare const processGetterRequests: (input: ProcessGetterRequestsInput) => ProcessGetterRequestsResult;
30
+ export declare const processRuntimeGetterRequests: (input: ProcessRuntimeGetterRequestsInput) => ProcessGetterRequestsResult;
package/src/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { createDefaultVSpec, getVisualizationRegistryEntry, listVisualizationRegistryEntries, registry, standaloneVisualizationRegistry, } from './registry';
2
+ export { createVisualizationRuntime } from './runtime';
3
+ export { registerAstratoElements, type AstratoVisualizationElement } from './web-components';
4
+ export type { AstratoClientLike, AstratoEngineServiceLike, AstratoEngineCapabilitiesLike, AstratoHostServicesLike, AstratoObservableLike, AstratoSelectionModeLike, AstratoSelectionServiceLike, AstratoSubscriptionLike, AstratoVariableServiceLike, DataBinding, MountedVisualizationHandle, SerializableVisualizationMetadata, StandaloneVisualizationFamily, StandaloneVisualizationType, VisualizationDataOptions, VisualizationDataResult, VisualizationExportConfig, VisualizationExportQuery, VisualizationManifestItemMetadata, VisualizationManifestMetadata, VisualizationBrushField, VisualizationMountStatus, VisualizationInstanceChange, VisualizationInstanceChangeListener, VisualizationInstanceChangeReason, VisualizationInstance, VisualizationInstanceUpdate, VisualizationPresetMetadata, VisualizationRegistry, VisualizationRegistryEntry, VisualizationReadyResult, VisualizationReadyStatus, VisualizationRequirementsMetadata, VisualizationRequirementsValidation, VisualizationRuntime, VisualizationRuntimeLogger, VisualizationRuntimeOptions, VisualizationRuntimeTheme, VisualizationSchemaMetadata, } from './types';
@@ -0,0 +1,4 @@
1
+ import type { SerializableVisualizationMetadata, VisualizationRegistryEntry } from '../types';
2
+ export declare const createSerializableVisualizationMetadata: (entry: VisualizationRegistryEntry) => SerializableVisualizationMetadata;
3
+ export declare const visualizationMetadata: SerializableVisualizationMetadata[];
4
+ export declare const getVisualizationMetadata: (type: string) => SerializableVisualizationMetadata;
@@ -0,0 +1,30 @@
1
+ import type { StandaloneDataFieldOption, StandaloneVSpec, StandaloneVSpecChange, VisualizationInstance, VisualizationRegistry, VisualizationRuntime } from '../types';
2
+ export interface VisualizationOperationRequest {
3
+ id?: string;
4
+ name: string;
5
+ payload: unknown;
6
+ }
7
+ export interface VisualizationChangeQueueItem {
8
+ id: string;
9
+ change: StandaloneVSpecChange;
10
+ timestamp: number;
11
+ }
12
+ export interface ApplyOperationsInput {
13
+ instance: VisualizationInstance;
14
+ operationRequests: VisualizationOperationRequest[];
15
+ availableFields?: StandaloneDataFieldOption[];
16
+ variables?: unknown[];
17
+ changesQueue?: VisualizationChangeQueueItem[];
18
+ registry?: VisualizationRegistry;
19
+ vTheme?: unknown;
20
+ }
21
+ export interface ApplyOperationsResult {
22
+ vSpec: StandaloneVSpec;
23
+ results: unknown;
24
+ }
25
+ export interface ApplyRuntimeOperationsInput extends Omit<ApplyOperationsInput, 'instance'> {
26
+ instanceId: string;
27
+ runtime: VisualizationRuntime;
28
+ }
29
+ export declare const applyOperations: (input: ApplyOperationsInput) => Promise<ApplyOperationsResult>;
30
+ export declare const applyRuntimeOperations: (input: ApplyRuntimeOperationsInput) => Promise<ApplyOperationsResult>;
@@ -0,0 +1,6 @@
1
+ import type { StandaloneVisualizationType, StandaloneVSpec, VisualizationRegistry, VisualizationRegistryEntry } from '../types';
2
+ export declare const standaloneVisualizationRegistry: VisualizationRegistry;
3
+ export declare const registry: VisualizationRegistry;
4
+ export declare const listVisualizationRegistryEntries: (source?: VisualizationRegistry) => VisualizationRegistryEntry[];
5
+ export declare const getVisualizationRegistryEntry: (type: string, source?: VisualizationRegistry) => VisualizationRegistryEntry;
6
+ export declare const createDefaultVSpec: (type: StandaloneVisualizationType, source?: VisualizationRegistry) => StandaloneVSpec;
@@ -0,0 +1,2 @@
1
+ import type { VisualizationRuntime, VisualizationRuntimeOptions } from '../types';
2
+ export declare const createVisualizationRuntime: (options: VisualizationRuntimeOptions) => VisualizationRuntime;
package/src/types.d.ts ADDED
@@ -0,0 +1,307 @@
1
+ import type { StandaloneVisualizationFamily, StandaloneVisualizationType } from './visualization-catalog';
2
+ export type { StandaloneVisualizationFamily, StandaloneVisualizationType } from './visualization-catalog';
3
+ export type StandaloneVSpec = object;
4
+ export type StandaloneVSpecChange = object;
5
+ export type StandaloneDataFieldOption = object;
6
+ export interface StandaloneFieldMetadata {
7
+ fields?: unknown[];
8
+ validFields?: unknown[];
9
+ viewsFields?: unknown[];
10
+ dimensions?: unknown[];
11
+ measures?: unknown[];
12
+ groupedDimensions?: Record<string, number>;
13
+ }
14
+ export interface DataBinding {
15
+ tenantId?: string;
16
+ semanticLayerId?: string;
17
+ datasourceType?: string;
18
+ queryContext?: unknown;
19
+ fieldMetadata?: StandaloneFieldMetadata;
20
+ }
21
+ export interface AstratoVariableServiceLike {
22
+ getVariables(instanceId: string): Promise<unknown[]>;
23
+ }
24
+ export type AstratoSelectionModeLike = 'auto' | 'manual';
25
+ export type AstratoSelectionKindLike = 'VALUE' | 'ASSOCIATIVE' | 'ALL';
26
+ export type AstratoSelectionStateLike = 'applied' | 'pending';
27
+ export interface AstratoSubscriptionLike {
28
+ unsubscribe(): void;
29
+ }
30
+ export interface AstratoObservableLike<TValue> {
31
+ subscribe(listener: (value: TValue) => void): AstratoSubscriptionLike;
32
+ }
33
+ export interface AstratoFieldReferenceLike {
34
+ fieldKey: string;
35
+ }
36
+ export interface AstratoSingleSelectFieldLike {
37
+ field: AstratoFieldReferenceLike;
38
+ enabled: boolean;
39
+ defaultValue?: unknown;
40
+ }
41
+ export interface AstratoSelectionServiceLike {
42
+ readonly singleSelectFields$?: AstratoObservableLike<AstratoSingleSelectFieldLike[]>;
43
+ getSelection(groupId: string): unknown;
44
+ getActiveSelection?(kind?: AstratoSelectionKindLike, groupId?: string): unknown;
45
+ selectValues(groupId: string, selection: unknown, options?: {
46
+ state?: AstratoSelectionStateLike;
47
+ }): void;
48
+ declineSelection?(groupId: string, selection: unknown): void;
49
+ removeSelection?(groupId: string, selection: unknown): void;
50
+ setNewSelectionState?(groupId: string, selection: unknown): void;
51
+ applyPendingSelections(groupId?: string): void;
52
+ clearPendingSelections(groupId?: string): void;
53
+ clearAllSelections(groupId?: string): void;
54
+ onActiveSelectionChange?(groupId?: string): AstratoObservableLike<unknown>;
55
+ onActiveSelectionChangeApplied?(groupId?: string): AstratoObservableLike<unknown>;
56
+ onActiveSelectionChangePending?(groupId?: string): AstratoObservableLike<unknown>;
57
+ selectionMode?: AstratoSelectionModeLike;
58
+ getSelectionMode?(groupId?: string): AstratoSelectionModeLike;
59
+ isFieldLocked?(field: AstratoFieldReferenceLike, groupId?: string): boolean;
60
+ isFieldLocked$?(field: AstratoFieldReferenceLike, groupId?: string): AstratoObservableLike<boolean>;
61
+ setFieldLocked?(field: AstratoFieldReferenceLike, locked: boolean, groupId?: string): void;
62
+ toggleFieldLocked?(field: AstratoFieldReferenceLike, groupId?: string): void;
63
+ }
64
+ export interface AstratoDataServiceLike {
65
+ query?(request: unknown): Promise<unknown> | unknown;
66
+ getSemanticLayerMetadata?(semanticLayerId: string): Promise<unknown> | unknown;
67
+ }
68
+ export interface AstratoModelServiceLike {
69
+ saveProperties(propertiesOrUpdater: unknown, config?: unknown): Promise<void>;
70
+ saveLocalVSpec(vSpec: unknown): Promise<void>;
71
+ }
72
+ export interface AstratoEngineFieldsServiceLike {
73
+ getFieldMetadata?(request?: unknown): Promise<StandaloneFieldMetadata>;
74
+ getFields?(request?: unknown): unknown[];
75
+ getDimensionsList?(request?: unknown): unknown[];
76
+ getGroupedDimensions?(request?: unknown): Record<string, number>;
77
+ setGroupedDimensions?(state: Record<string, number>): void;
78
+ getMeasuresList?(request?: unknown): unknown[];
79
+ getValidFields?(request?: unknown): unknown[];
80
+ getViewsFields?(request?: unknown): unknown[];
81
+ }
82
+ export interface AstratoEngineCapabilitiesLike extends Record<string, unknown> {
83
+ /** Opt in only when the integration supports association discovery and selection execution. */
84
+ associativeFiltering?: boolean;
85
+ }
86
+ export interface AstratoEngineServiceLike {
87
+ capabilities?: AstratoEngineCapabilitiesLike;
88
+ databaseInfo?: unknown;
89
+ localeSettings?: unknown;
90
+ fields?: AstratoEngineFieldsServiceLike;
91
+ transformQuery?(request: unknown): Promise<unknown> | unknown;
92
+ getData?(query: unknown): Promise<unknown> | unknown;
93
+ /** Views eligible for associative filtering against a target field. */
94
+ getAssociatedViews?(fieldKey: string, dataBinding?: DataBinding): Promise<string[]> | string[];
95
+ areFieldsConnected?(...args: unknown[]): boolean;
96
+ areViewsConnected?(...args: unknown[]): boolean;
97
+ }
98
+ export interface AstratoHostServicesLike {
99
+ data?: AstratoDataServiceLike;
100
+ engine?: AstratoEngineServiceLike;
101
+ model?: AstratoModelServiceLike;
102
+ variables?: AstratoVariableServiceLike;
103
+ selections?: AstratoSelectionServiceLike;
104
+ }
105
+ export interface AstratoClientLike {
106
+ hostServices?: AstratoHostServicesLike;
107
+ services?: AstratoHostServicesLike;
108
+ }
109
+ export interface VisualizationInstance {
110
+ id: string;
111
+ type: StandaloneVisualizationType;
112
+ preset?: string;
113
+ vSpec?: StandaloneVSpec;
114
+ groupId?: string;
115
+ dataBinding?: DataBinding;
116
+ }
117
+ export interface StandaloneVisualizationModule {
118
+ type: StandaloneVisualizationType;
119
+ element?: typeof HTMLElement;
120
+ default?: unknown;
121
+ }
122
+ export interface VisualizationPresetMetadata {
123
+ id: string;
124
+ label: string;
125
+ friendlyName: string;
126
+ enabled: boolean;
127
+ group?: {
128
+ id: string;
129
+ name: string;
130
+ };
131
+ description?: string;
132
+ requirements?: string[];
133
+ }
134
+ export interface VisualizationRequirementsMetadata {
135
+ source: 'chartRequirementsManifest';
136
+ scenarios: unknown[];
137
+ }
138
+ export interface VisualizationSchemaMetadata {
139
+ vSpec?: Record<string, unknown>;
140
+ }
141
+ export interface VisualizationManifestItemMetadata {
142
+ name: string;
143
+ friendlyName?: string;
144
+ description?: string;
145
+ payloadSchema?: unknown;
146
+ resultSchema?: unknown;
147
+ }
148
+ export interface VisualizationManifestMetadata {
149
+ count: number;
150
+ names: string[];
151
+ items: VisualizationManifestItemMetadata[];
152
+ }
153
+ export interface VisualizationRegistryEntry {
154
+ type: StandaloneVisualizationType;
155
+ family: StandaloneVisualizationFamily;
156
+ load: () => Promise<StandaloneVisualizationModule>;
157
+ createDefaultVSpec: () => StandaloneVSpec;
158
+ capabilities?: Record<string, boolean>;
159
+ presets?: VisualizationPresetMetadata[];
160
+ requirements?: VisualizationRequirementsMetadata;
161
+ schemas?: VisualizationSchemaMetadata;
162
+ operations?: VisualizationManifestMetadata;
163
+ getters?: VisualizationManifestMetadata;
164
+ description?: string;
165
+ examples?: string[];
166
+ }
167
+ export type VisualizationRegistry = Record<StandaloneVisualizationType, VisualizationRegistryEntry>;
168
+ export interface SerializableVisualizationMetadata {
169
+ type: StandaloneVisualizationType;
170
+ family: StandaloneVisualizationFamily;
171
+ capabilities?: Record<string, boolean>;
172
+ presets: VisualizationPresetMetadata[];
173
+ requirements?: VisualizationRequirementsMetadata;
174
+ schemas?: VisualizationSchemaMetadata;
175
+ operations: VisualizationManifestMetadata;
176
+ getters: VisualizationManifestMetadata;
177
+ description?: string;
178
+ examples?: string[];
179
+ }
180
+ export interface VisualizationRequirementsValidation {
181
+ instanceId: string;
182
+ type: StandaloneVisualizationType;
183
+ requirementsMet: boolean;
184
+ reason?: string;
185
+ requirements?: VisualizationRequirementsMetadata;
186
+ }
187
+ export interface VisualizationRuntimeLogger {
188
+ warn(message: string, context?: unknown): void;
189
+ error?(message: string, context?: unknown): void;
190
+ }
191
+ export type VisualizationMountStatus = 'mounted' | 'error' | 'unmounted';
192
+ export type VisualizationReadyStatus = 'rendered' | 'error' | 'unmounted' | 'timeout';
193
+ export interface VisualizationReadyResult {
194
+ instanceId: string;
195
+ status: VisualizationReadyStatus;
196
+ }
197
+ export type VisualizationInstanceUpdate = Partial<Omit<VisualizationInstance, 'id'>>;
198
+ export type VisualizationInstanceChangeReason = 'created' | 'updated' | 'vspec-updated' | 'removed';
199
+ export interface VisualizationInstanceChange {
200
+ instanceId: string;
201
+ reason: VisualizationInstanceChangeReason;
202
+ instance?: VisualizationInstance;
203
+ }
204
+ export type VisualizationInstanceChangeListener = (change: VisualizationInstanceChange) => void;
205
+ export interface VisualizationRuntimeOptions {
206
+ client: AstratoClientLike;
207
+ registry: VisualizationRegistry;
208
+ instances?: VisualizationInstance[];
209
+ logger?: VisualizationRuntimeLogger;
210
+ /**
211
+ * Maximum wait for the initial render event, starting when the chart is initialized.
212
+ * Defaults to 40,000 ms. Must be an integer from 1 to 2,147,483,647.
213
+ * A timeout settles readiness without cancelling rendering or unmounting the chart.
214
+ */
215
+ readyTimeoutMs?: number;
216
+ /**
217
+ * Theme overrides for every chart this runtime mounts.
218
+ */
219
+ theme?: VisualizationRuntimeTheme;
220
+ }
221
+ export interface VisualizationRuntimeTheme {
222
+ /**
223
+ * Font stack for chart text, including text drawn on canvas. Defaults to the host page's font:
224
+ * `--astrato-font-family`, then `--font-family`, then the body font. `system-ui, sans-serif` is always appended.
225
+ */
226
+ fontFamily?: string;
227
+ }
228
+ /**
229
+ * Export settings the chart registers with its query, taken from its vSpec.
230
+ */
231
+ export interface VisualizationExportConfig {
232
+ limit?: number;
233
+ nullAs?: string;
234
+ csvFormatValues?: boolean;
235
+ withMetadata?: unknown;
236
+ pivotConfig?: Record<string, unknown>;
237
+ }
238
+ export interface VisualizationExportQuery {
239
+ instanceId: string;
240
+ /**
241
+ * The engine query the chart itself runs, including Top N, sorting, grouping and the chart's own filters,
242
+ * without pagination.
243
+ */
244
+ query: Record<string, unknown>;
245
+ config?: VisualizationExportConfig;
246
+ }
247
+ export interface VisualizationDataOptions {
248
+ /**
249
+ * Maximum rows to return. Defaults to the chart's export limit, or 1,000, and is capped at 100,000.
250
+ */
251
+ limit?: number;
252
+ }
253
+ export interface VisualizationDataResult extends VisualizationExportQuery {
254
+ /** The data service response for `query`, in the same shape the chart receives. */
255
+ data: unknown;
256
+ }
257
+ export interface MountedVisualizationHandle {
258
+ instanceId: string;
259
+ ready: Promise<VisualizationReadyResult>;
260
+ status: VisualizationMountStatus;
261
+ requirements: VisualizationRequirementsValidation;
262
+ /** Resolves to `null` when the chart has no data to export, for example when its requirements are not met. */
263
+ getExportQuery(): Promise<VisualizationExportQuery | null>;
264
+ /** Runs the chart's export query. Resolves to `null` when the chart has no data to export. */
265
+ getData(options?: VisualizationDataOptions): Promise<VisualizationDataResult | null>;
266
+ unmount(): void;
267
+ }
268
+ /**
269
+ * Values of one field to brush across a selection group.
270
+ */
271
+ export interface VisualizationBrushField {
272
+ /**
273
+ * Engine field key, the same identity selections use.
274
+ */
275
+ fieldKey: string;
276
+ /**
277
+ * Values to bring forward. Other values of the field are shown in the inactive style.
278
+ */
279
+ values: Array<string | number | boolean>;
280
+ }
281
+ export interface VisualizationRuntime {
282
+ client: AstratoClientLike;
283
+ registry: VisualizationRegistry;
284
+ createInstance(instance: VisualizationInstance): VisualizationInstance;
285
+ updateInstance(instanceId: string, update: VisualizationInstanceUpdate): VisualizationInstance;
286
+ getInstance(instanceId: string): VisualizationInstance;
287
+ listInstances(): VisualizationInstance[];
288
+ removeInstance(instanceId: string): void;
289
+ validateInstanceRequirements(instanceId: string): VisualizationRequirementsValidation;
290
+ mount(container: HTMLElement, instanceId: string): Promise<MountedVisualizationHandle>;
291
+ unmount(container: HTMLElement): void;
292
+ /** Same as the mounted handle's `getExportQuery()`; resolves to `null` when the instance is not mounted. */
293
+ getExportQuery(instanceId: string): Promise<VisualizationExportQuery | null>;
294
+ /** Same as the mounted handle's `getData()`; resolves to `null` when the instance is not mounted. */
295
+ getData(instanceId: string, options?: VisualizationDataOptions): Promise<VisualizationDataResult | null>;
296
+ onInstanceChange(instanceId: string, listener: VisualizationInstanceChangeListener): () => void;
297
+ /**
298
+ * Brush values across every instance of a selection group without selecting them. The brush replaces the
299
+ * group's previous one, is drawn like a selection, and never creates a selection, a filter or a query.
300
+ * Instances mounted into the group later show it too.
301
+ */
302
+ brush(groupId: string, fields: VisualizationBrushField[]): void;
303
+ /**
304
+ * Remove the group's brush.
305
+ */
306
+ clearBrush(groupId: string): void;
307
+ }
@@ -0,0 +1,82 @@
1
+ export declare const standaloneVisualizationCatalog: {
2
+ readonly bar: {
3
+ readonly family: "chart";
4
+ };
5
+ readonly combo: {
6
+ readonly family: "chart";
7
+ };
8
+ readonly 'distribution-gauge': {
9
+ readonly family: "chart";
10
+ };
11
+ readonly dot: {
12
+ readonly family: "chart";
13
+ };
14
+ readonly gauge: {
15
+ readonly family: "chart";
16
+ };
17
+ readonly heatMap: {
18
+ readonly family: "chart";
19
+ };
20
+ readonly histogram: {
21
+ readonly family: "chart";
22
+ };
23
+ readonly line: {
24
+ readonly family: "chart";
25
+ };
26
+ readonly pie: {
27
+ readonly family: "chart";
28
+ };
29
+ readonly radar: {
30
+ readonly family: "chart";
31
+ };
32
+ readonly sankey: {
33
+ readonly family: "chart";
34
+ };
35
+ readonly scatter: {
36
+ readonly family: "chart";
37
+ };
38
+ readonly table: {
39
+ readonly family: "chart";
40
+ };
41
+ readonly tree: {
42
+ readonly family: "chart";
43
+ };
44
+ readonly treemap: {
45
+ readonly family: "chart";
46
+ };
47
+ readonly waterfall: {
48
+ readonly family: "chart";
49
+ };
50
+ readonly 'word-cloud': {
51
+ readonly family: "chart";
52
+ };
53
+ readonly 'astrato-app-filter-bar': {
54
+ readonly family: "filter";
55
+ };
56
+ readonly 'date-picker': {
57
+ readonly family: "filter";
58
+ };
59
+ readonly number: {
60
+ readonly family: "object";
61
+ };
62
+ readonly filter: {
63
+ readonly family: "filter";
64
+ };
65
+ readonly iframe: {
66
+ readonly family: "object";
67
+ };
68
+ readonly image: {
69
+ readonly family: "object";
70
+ };
71
+ readonly shape: {
72
+ readonly family: "object";
73
+ };
74
+ readonly simpleTextObject: {
75
+ readonly family: "object";
76
+ };
77
+ readonly slider: {
78
+ readonly family: "filter";
79
+ };
80
+ };
81
+ export type StandaloneVisualizationType = keyof typeof standaloneVisualizationCatalog;
82
+ export type StandaloneVisualizationFamily = (typeof standaloneVisualizationCatalog)[StandaloneVisualizationType]['family'];
@@ -0,0 +1,12 @@
1
+ import type { VisualizationReadyResult, VisualizationRuntime } from '../types';
2
+ export interface RegisterAstratoElementsOptions {
3
+ runtime: VisualizationRuntime;
4
+ tagName?: string;
5
+ customElementsRegistry?: CustomElementRegistry;
6
+ }
7
+ export interface AstratoVisualizationElement extends HTMLElement {
8
+ instanceId: string | null;
9
+ ready?: Promise<VisualizationReadyResult>;
10
+ runtime?: VisualizationRuntime;
11
+ }
12
+ export declare const registerAstratoElements: (options: RegisterAstratoElementsOptions) => void;
package/styles.css ADDED
@@ -0,0 +1,2 @@
1
+ .PresetDateRangePicker_panel{padding:0 22px 11px}.PresetDateRangePicker_button{text-align:center;color:#00a699;height:100%;font:inherit;box-sizing:border-box;cursor:pointer;background:0 0;border:2px solid #00a699;margin-right:8px;padding:4px 12px;font-weight:700;line-height:normal;position:relative;overflow:visible}.PresetDateRangePicker_button:active{outline:0}.PresetDateRangePicker_button__selected{color:#fff;background:#00a699}.SingleDatePickerInput{background-color:#fff;display:inline-block}.SingleDatePickerInput__withBorder{border:1px solid #dbdbdb;border-radius:2px}.SingleDatePickerInput__rtl{direction:rtl}.SingleDatePickerInput__disabled{background-color:#f2f2f2}.SingleDatePickerInput__block{display:block}.SingleDatePickerInput__showClearDate{padding-right:30px}.SingleDatePickerInput_clearDate{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;margin:0 10px 0 5px;padding:10px;line-height:normal;position:absolute;top:50%;right:0;overflow:visible;transform:translateY(-50%)}.SingleDatePickerInput_clearDate__default:focus,.SingleDatePickerInput_clearDate__default:hover{background:#dbdbdb;border-radius:50%}.SingleDatePickerInput_clearDate__small{padding:6px}.SingleDatePickerInput_clearDate__hide{visibility:hidden}.SingleDatePickerInput_clearDate_svg{fill:#82888a;vertical-align:middle;width:15px;height:12px}.SingleDatePickerInput_clearDate_svg__small{height:9px}.SingleDatePickerInput_calendarIcon{color:inherit;font:inherit;cursor:pointer;vertical-align:middle;background:0 0;border:0;margin:0 5px 0 10px;padding:10px;line-height:normal;display:inline-block;overflow:visible}.SingleDatePickerInput_calendarIcon_svg{fill:#82888a;vertical-align:middle;width:14px;height:15px}.SingleDatePicker{display:inline-block;position:relative}.SingleDatePicker__block{display:block}.SingleDatePicker_picker{z-index:1;background-color:#fff;position:absolute}.SingleDatePicker_picker__rtl{direction:rtl}.SingleDatePicker_picker__directionLeft{left:0}.SingleDatePicker_picker__directionRight{right:0}.SingleDatePicker_picker__portal{background-color:#0000004d;width:100%;height:100%;position:fixed;top:0;left:0}.SingleDatePicker_picker__fullScreenPortal{background-color:#fff}.SingleDatePicker_closeButton{color:inherit;font:inherit;cursor:pointer;z-index:2;background:0 0;border:0;padding:15px;line-height:normal;position:absolute;top:0;right:0;overflow:visible}.SingleDatePicker_closeButton:focus,.SingleDatePicker_closeButton:hover{color:darken(#cacccd,10%);text-decoration:none}.SingleDatePicker_closeButton_svg{fill:#cacccd;width:15px;height:15px}.DayPickerKeyboardShortcuts_buttonReset{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:0;padding:0;font-size:14px;line-height:normal;overflow:visible}.DayPickerKeyboardShortcuts_buttonReset:active{outline:0}.DayPickerKeyboardShortcuts_show{z-index:2;width:33px;height:26px;position:absolute}.DayPickerKeyboardShortcuts_show:before{content:"";display:block;position:absolute}.DayPickerKeyboardShortcuts_show__bottomRight{bottom:0;right:0}.DayPickerKeyboardShortcuts_show__bottomRight:before{border-top:26px solid #0000;border-right:33px solid #00a699;bottom:0;right:0}.DayPickerKeyboardShortcuts_show__bottomRight:hover:before{border-right:33px solid #008489}.DayPickerKeyboardShortcuts_show__topRight{top:0;right:0}.DayPickerKeyboardShortcuts_show__topRight:before{border-bottom:26px solid #0000;border-right:33px solid #00a699;top:0;right:0}.DayPickerKeyboardShortcuts_show__topRight:hover:before{border-right:33px solid #008489}.DayPickerKeyboardShortcuts_show__topLeft{top:0;left:0}.DayPickerKeyboardShortcuts_show__topLeft:before{border-bottom:26px solid #0000;border-left:33px solid #00a699;top:0;left:0}.DayPickerKeyboardShortcuts_show__topLeft:hover:before{border-left:33px solid #008489}.DayPickerKeyboardShortcuts_showSpan{color:#fff;position:absolute}.DayPickerKeyboardShortcuts_showSpan__bottomRight{bottom:0;right:5px}.DayPickerKeyboardShortcuts_showSpan__topRight{top:1px;right:5px}.DayPickerKeyboardShortcuts_showSpan__topLeft{top:1px;left:5px}.DayPickerKeyboardShortcuts_panel{z-index:2;text-align:left;background:#fff;border:1px solid #dbdbdb;border-radius:2px;margin:33px;padding:22px;position:absolute;inset:0;overflow:auto}.DayPickerKeyboardShortcuts_title{margin:0;font-size:16px;font-weight:700}.DayPickerKeyboardShortcuts_list{padding:0;font-size:14px;list-style:none}.DayPickerKeyboardShortcuts_close{z-index:2;position:absolute;top:22px;right:22px}.DayPickerKeyboardShortcuts_close:active{outline:0}.DayPickerKeyboardShortcuts_closeSvg{fill:#cacccd;width:15px;height:15px}.DayPickerKeyboardShortcuts_closeSvg:focus,.DayPickerKeyboardShortcuts_closeSvg:hover{fill:#82888a}.CalendarDay{box-sizing:border-box;cursor:pointer;text-align:center;font-size:14px}.CalendarDay:active{outline:0}.CalendarDay__defaultCursor{cursor:default}.CalendarDay__default{color:#484848;background:#fff;border:1px solid #e4e7e7}.CalendarDay__default:hover{color:inherit;background:#e4e7e7;border:1px solid #e4e7e7}.CalendarDay__hovered_offset{color:inherit;background:#f4f5f5;border:1px double #e4e7e7}.CalendarDay__outside{color:#484848;background:#fff;border:0}.CalendarDay__outside:hover{border:0}.CalendarDay__blocked_minimum_nights{color:#cacccd;background:#fff;border:1px solid #eceeee}.CalendarDay__blocked_minimum_nights:active,.CalendarDay__blocked_minimum_nights:hover{color:#cacccd;background:#fff}.CalendarDay__highlighted_calendar{color:#484848;background:#ffe8bc}.CalendarDay__highlighted_calendar:active,.CalendarDay__highlighted_calendar:hover{color:#484848;background:#ffce71}.CalendarDay__selected_span{color:#fff;background:#66e2da;border:1px double #33dacd}.CalendarDay__selected_span:active,.CalendarDay__selected_span:hover{color:#fff;background:#33dacd;border:1px double #33dacd}.CalendarDay__selected,.CalendarDay__selected:active,.CalendarDay__selected:hover{color:#fff;background:#00a699;border:1px double #00a699}.CalendarDay__hovered_span,.CalendarDay__hovered_span:hover{color:#007a87;background:#b2f1ec;border:1px double #80e8e0}.CalendarDay__hovered_span:active{color:#007a87;background:#80e8e0;border:1px double #80e8e0}.CalendarDay__blocked_calendar,.CalendarDay__blocked_calendar:active,.CalendarDay__blocked_calendar:hover{color:#82888a;background:#cacccd;border:1px solid #cacccd}.CalendarDay__blocked_out_of_range,.CalendarDay__blocked_out_of_range:active,.CalendarDay__blocked_out_of_range:hover{color:#cacccd;background:#fff;border:1px solid #e4e7e7}.CalendarDay__hovered_start_first_possible_end{background:#eceeee;border:1px double #eceeee}.CalendarDay__hovered_start_blocked_min_nights{background:#eceeee;border:1px double #e4e7e7}.CalendarMonth{text-align:center;vertical-align:top;-webkit-user-select:none;user-select:none;background:#fff}.CalendarMonth_table{border-collapse:collapse;border-spacing:0}.CalendarMonth_verticalSpacing{border-collapse:separate}.CalendarMonth_caption{color:#484848;text-align:center;caption-side:initial;padding-top:22px;padding-bottom:37px;font-size:18px}.CalendarMonth_caption__verticalScrollable{padding-top:12px;padding-bottom:7px}.CalendarMonthGrid{text-align:left;z-index:0;background:#fff}.CalendarMonthGrid__animating{z-index:1}.CalendarMonthGrid__horizontal{position:absolute;left:9px}.CalendarMonthGrid__vertical,.CalendarMonthGrid__vertical_scrollable{margin:0 auto}.CalendarMonthGrid_month__horizontal{vertical-align:top;min-height:100%;display:inline-block}.CalendarMonthGrid_month__hideForAnimation{z-index:-1;opacity:0;pointer-events:none;position:absolute}.CalendarMonthGrid_month__hidden{visibility:hidden}.DayPickerNavigation{z-index:2;position:relative}.DayPickerNavigation__horizontal{height:0}.DayPickerNavigation__verticalScrollable_prevNav{z-index:1}.DayPickerNavigation__verticalDefault{width:100%;height:52px;position:absolute;bottom:0;left:0}.DayPickerNavigation__verticalScrollableDefault{position:relative}.DayPickerNavigation__bottom{height:auto}.DayPickerNavigation__bottomDefault{justify-content:space-between;display:flex}.DayPickerNavigation_button{cursor:pointer;-webkit-user-select:none;user-select:none;border:0;margin:0;padding:0}.DayPickerNavigation_button__default{color:#757575;background-color:#fff;border:1px solid #e4e7e7}.DayPickerNavigation_button__default:focus,.DayPickerNavigation_button__default:hover{border:1px solid #c4c4c4}.DayPickerNavigation_button__default:active{background:#f2f2f2}.DayPickerNavigation_button__disabled{cursor:default;border:1px solid #f2f2f2}.DayPickerNavigation_button__disabled:focus,.DayPickerNavigation_button__disabled:hover{border:1px solid #f2f2f2}.DayPickerNavigation_button__disabled:active{background:0 0}.DayPickerNavigation_button__horizontalDefault{border-radius:3px;padding:6px 9px;line-height:.78;position:absolute;top:18px}.DayPickerNavigation_bottomButton__horizontalDefault{margin:-10px 22px 30px;position:static}.DayPickerNavigation_leftButton__horizontalDefault{left:22px}.DayPickerNavigation_rightButton__horizontalDefault{right:22px}.DayPickerNavigation_button__verticalDefault{text-align:center;background:#fff;width:50%;height:100%;padding:5px;display:inline-block;position:relative;box-shadow:0 0 5px 2px #0000001a}.DayPickerNavigation_nextButton__verticalDefault{border-left:0}.DayPickerNavigation_nextButton__verticalScrollableDefault,.DayPickerNavigation_prevButton__verticalScrollableDefault{width:100%}.DayPickerNavigation_svg__horizontal{fill:#82888a;width:19px;height:19px;display:block}.DayPickerNavigation_svg__vertical{fill:#484848;width:42px;height:42px}.DayPickerNavigation_svg__disabled{fill:#f2f2f2}.DayPicker{text-align:left;background:#fff;position:relative}.DayPicker__horizontal{background:#fff}.DayPicker__verticalScrollable{height:100%}.DayPicker__hidden{visibility:hidden}.DayPicker__withBorder{border-radius:3px;box-shadow:0 2px 6px #0000000d,0 0 0 1px #00000012}.DayPicker_portal__horizontal{box-shadow:none;position:absolute;top:50%;left:50%}.DayPicker_portal__vertical{position:initial}.DayPicker_focusRegion{outline:0}.DayPicker_calendarInfo__horizontal,.DayPicker_wrapper__horizontal{vertical-align:top;display:inline-block}.DayPicker_weekHeaders{position:relative}.DayPicker_weekHeaders__horizontal{margin-left:9px}.DayPicker_weekHeader{color:#757575;z-index:2;text-align:left;position:absolute;top:62px}.DayPicker_weekHeader__vertical{left:50%}.DayPicker_weekHeader__verticalScrollable{text-align:center;background:#fff;border-bottom:1px solid #dbdbdb;width:100%;margin-left:0;display:table-row;top:0;left:0}.DayPicker_weekHeader_ul{margin:1px 0;padding-left:0;padding-right:0;font-size:14px;list-style:none}.DayPicker_weekHeader_li{text-align:center;display:inline-block}.DayPicker_transitionContainer{border-radius:3px;position:relative;overflow:hidden}.DayPicker_transitionContainer__horizontal{transition:height .2s ease-in-out}.DayPicker_transitionContainer__vertical{width:100%}.DayPicker_transitionContainer__verticalScrollable{height:100%;padding-top:20px;position:absolute;inset:0;overflow-y:scroll}.DateInput{vertical-align:middle;background:#fff;width:130px;margin:0;padding:0;display:inline-block;position:relative}.DateInput__small{width:97px}.DateInput__block{width:100%}.DateInput__disabled{color:#dbdbdb;background:#f2f2f2}.DateInput_input{color:#484848;background-color:#fff;border:0;border-bottom:2px solid #0000;border-radius:0;width:100%;padding:11px 11px 9px;font-size:19px;font-weight:200;line-height:24px}.DateInput_input__small{letter-spacing:.2px;padding:7px 7px 5px;font-size:15px;line-height:18px}.DateInput_input__regular{font-weight:auto}.DateInput_input__readOnly{-webkit-user-select:none;user-select:none}.DateInput_input__focused{background:#fff;border:0;border-bottom:2px solid #008489;outline:0}.DateInput_input__disabled{background:#f2f2f2;font-style:italic}.DateInput_screenReaderMessage{clip:rect(0,0,0,0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.DateInput_fang{z-index:2;width:20px;height:10px;position:absolute;left:22px}.DateInput_fangShape{fill:#fff}.DateInput_fangStroke{stroke:#dbdbdb;fill:#0000}.DateRangePickerInput{background-color:#fff;display:inline-block}.DateRangePickerInput__disabled{background:#f2f2f2}.DateRangePickerInput__withBorder{border:1px solid #dbdbdb;border-radius:2px}.DateRangePickerInput__rtl{direction:rtl}.DateRangePickerInput__block{display:block}.DateRangePickerInput__showClearDates{padding-right:30px}.DateRangePickerInput_arrow{vertical-align:middle;color:#484848;display:inline-block}.DateRangePickerInput_arrow_svg{vertical-align:middle;fill:#484848;width:24px;height:24px}.DateRangePickerInput_clearDates{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;margin:0 10px 0 5px;padding:10px;line-height:normal;position:absolute;top:50%;right:0;overflow:visible;transform:translateY(-50%)}.DateRangePickerInput_clearDates__small{padding:6px}.DateRangePickerInput_clearDates_default:focus,.DateRangePickerInput_clearDates_default:hover{background:#dbdbdb;border-radius:50%}.DateRangePickerInput_clearDates__hide{visibility:hidden}.DateRangePickerInput_clearDates_svg{fill:#82888a;vertical-align:middle;width:15px;height:12px}.DateRangePickerInput_clearDates_svg__small{height:9px}.DateRangePickerInput_calendarIcon{color:inherit;font:inherit;cursor:pointer;vertical-align:middle;background:0 0;border:0;margin:0 5px 0 10px;padding:10px;line-height:normal;display:inline-block;overflow:visible}.DateRangePickerInput_calendarIcon_svg{fill:#82888a;vertical-align:middle;width:14px;height:15px}.DateRangePicker{display:inline-block;position:relative}.DateRangePicker__block{display:block}.DateRangePicker_picker{z-index:1;background-color:#fff;position:absolute}.DateRangePicker_picker__rtl{direction:rtl}.DateRangePicker_picker__directionLeft{left:0}.DateRangePicker_picker__directionRight{right:0}.DateRangePicker_picker__portal{background-color:#0000004d;width:100%;height:100%;position:fixed;top:0;left:0}.DateRangePicker_picker__fullScreenPortal{background-color:#fff}.DateRangePicker_closeButton{color:inherit;font:inherit;cursor:pointer;z-index:2;background:0 0;border:0;padding:15px;line-height:normal;position:absolute;top:0;right:0;overflow:visible}.DateRangePicker_closeButton:focus,.DateRangePicker_closeButton:hover{color:darken(#cacccd,10%);text-decoration:none}.DateRangePicker_closeButton_svg{fill:#cacccd;width:15px;height:15px}
2
+ /*$vite$:1*/