File tree Expand file tree Collapse file tree
src/platform/plugins/shared/embeddable Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1010import type { Reference } from '@kbn/content-management-utils' ;
1111
1212export type EmbeddableTransforms <
13- StoredState extends object = object ,
14- State extends object = object
13+ StoredEmbeddableState extends object = object ,
14+ EmbeddableState extends object = object
1515> = {
16- transformOut ?: ( state : StoredState , references ?: Reference [ ] ) => State ;
17- transformIn ?: ( state : State ) => {
18- state : StoredState ;
16+ /**
17+ * Converts StoredEmbeddableState and injects references into EmbeddableState
18+ */
19+ transformOut ?: ( storedState : StoredEmbeddableState , references ?: Reference [ ] ) => EmbeddableState ;
20+ /**
21+ * Converts EmbeddableState into StoredEmbeddableState and extracts references
22+ */
23+ transformIn ?: ( state : EmbeddableState ) => {
24+ state : StoredEmbeddableState ;
1925 references ?: Reference [ ] ;
2026 } ;
2127} ;
Original file line number Diff line number Diff line change @@ -70,6 +70,11 @@ export interface EmbeddableSetup {
7070 */
7171 registerReactEmbeddableFactory : typeof registerReactEmbeddableFactory ;
7272
73+ /**
74+ * Use registerTransforms to register transforms for an embeddable type.
75+ * Public transforms registry uses transformOut to convert StoredEmbeddableState from URL into EmbeddableState.
76+ * transformIn is not used.
77+ */
7378 registerTransforms : (
7479 type : string ,
7580 getTransforms : ( ) => Promise < EmbeddableTransforms < any , any > | undefined >
Original file line number Diff line number Diff line change @@ -30,6 +30,14 @@ import type { EnhancementRegistryDefinition } from '../common/enhancements/types
3030
3131export interface EmbeddableSetup extends PersistableStateService < EmbeddableStateWithType > {
3232 registerEmbeddableFactory : ( factory : EmbeddableRegistryDefinition ) => void ;
33+ /**
34+ * Use registerTransforms to register transforms for an embeddable type.
35+ * Transforms decouple REST API state from stored state,
36+ * allowing embeddables to have one shape for REST APIs and another for storage.
37+ * Embeddable containers, such as dashboard, use transforms to convert EmbeddableState into StoreEmbeddableState and vice versa.
38+ * On read, transformOut is used to convert StoredEmbeddableState and inject references into EmbeddableState.
39+ * On write, transformIn is used to extract references and convert EmbeddableState into StoredEmbeddableState.
40+ */
3341 registerTransforms : ( type : string , transforms : EmbeddableTransforms < any , any > ) => void ;
3442 registerEnhancement : ( enhancement : EnhancementRegistryDefinition ) => void ;
3543 getAllMigrations : ( ) => MigrateFunctionsObject ;
You can’t perform that action at this time.
0 commit comments