File tree Expand file tree Collapse file tree 10 files changed +69
-2
lines changed
createFieldPlugin/createPluginActions
createPluginMessageListener
messaging/pluginMessage/containerToPluginMessage Expand file tree Collapse file tree 10 files changed +69
-2
lines changed Original file line number Diff line number Diff line change @@ -6,7 +6,7 @@ import type {
6
6
LoadedMessage ,
7
7
OnMessage ,
8
8
StateChangedMessage ,
9
- PreviewDimensionChangeMessage ,
9
+ PreviewDimensionResponseMessage ,
10
10
} from '../../messaging'
11
11
import { getRandomUid } from '../../utils'
12
12
@@ -19,7 +19,10 @@ type CallbackMap = {
19
19
stateChanged : Record < CallbackId , OnMessage < StateChangedMessage > >
20
20
loaded : Record < CallbackId , OnMessage < LoadedMessage > >
21
21
promptAI : Record < CallbackId , OnMessage < PromptAIResponseMessage > >
22
- previewDimension : Record < CallbackId , OnMessage < PreviewDimensionChangeMessage > >
22
+ previewDimension : Record <
23
+ CallbackId ,
24
+ OnMessage < PreviewDimensionResponseMessage >
25
+ >
23
26
}
24
27
type CallbackType = keyof CallbackMap
25
28
Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ import {
20
20
type OnUnknownPluginMessage ,
21
21
type OnPromptAIMessage ,
22
22
type PromptAIPayload ,
23
+ type OnPreviewDimensionMessage ,
23
24
} from '../../messaging'
24
25
import { FieldPluginActions , Initialize } from '../FieldPluginActions'
25
26
import { pluginStateFromStateChangeMessage } from './partialPluginStateFromStateChangeMessage'
@@ -82,6 +83,10 @@ export const createPluginActions: CreatePluginActions = ({
82
83
popCallback ( 'promptAI' , data . callbackId ) ?.( data )
83
84
}
84
85
86
+ const onPreviewDimension : OnPreviewDimensionMessage = ( data ) => {
87
+ popCallback ( 'previewDimension' , data . callbackId )
88
+ }
89
+
85
90
const onUnknownMessage : OnUnknownPluginMessage = ( data ) => {
86
91
// TODO remove side-effect, making functions in this file pure.
87
92
// perhaps only show this message in development mode?
@@ -101,6 +106,7 @@ export const createPluginActions: CreatePluginActions = ({
101
106
onUserContextRequest,
102
107
onAssetSelect,
103
108
onPromptAI,
109
+ onPreviewDimension,
104
110
onUnknownMessage,
105
111
}
106
112
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import type {
6
6
OnPromptAIMessage ,
7
7
OnStateChangeMessage ,
8
8
OnUnknownPluginMessage ,
9
+ OnPreviewDimensionMessage ,
9
10
} from '../../../messaging'
10
11
import { handlePluginMessage } from './handlePluginMessage'
11
12
@@ -16,6 +17,7 @@ export type PluginMessageCallbacks = {
16
17
onUserContextRequest : OnUserContextRequestMessage
17
18
onAssetSelect : OnAssetSelectMessage
18
19
onPromptAI : OnPromptAIMessage
20
+ onPreviewDimension : OnPreviewDimensionMessage
19
21
onUnknownMessage : OnUnknownPluginMessage
20
22
}
21
23
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ const mockCallbacks = (): PluginMessageCallbacks => ({
18
18
onAssetSelect : vi . fn ( ) ,
19
19
onUnknownMessage : vi . fn ( ) ,
20
20
onLoaded : vi . fn ( ) ,
21
+ onPreviewDimension : vi . fn ( ) ,
21
22
onPromptAI : vi . fn ( ) ,
22
23
} )
23
24
Original file line number Diff line number Diff line change 8
8
} from '../../../messaging'
9
9
import { PluginMessageCallbacks } from './createPluginMessageListener'
10
10
import { isStateMessage } from '../../../messaging/pluginMessage/containerToPluginMessage/StateChangedMessage'
11
+ import { isPreviewDimensionResponse } from '../../../messaging/pluginMessage/containerToPluginMessage//PreviewDimensionResponseMessage'
11
12
12
13
export const handlePluginMessage = (
13
14
data : unknown ,
@@ -38,6 +39,8 @@ export const handlePluginMessage = (
38
39
callbacks . onAssetSelect ( data )
39
40
} else if ( isPromptAIMessage ( data ) ) {
40
41
callbacks . onPromptAI ( data )
42
+ } else if ( isPreviewDimensionResponse ( data ) ) {
43
+ callbacks . onPreviewDimension ( data )
41
44
} else {
42
45
callbacks . onUnknownMessage ( data )
43
46
}
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import { UserContextRequestMessage } from './UserContextRequestMessage'
5
5
import { MessageToPlugin } from './MessageToPlugin'
6
6
import { StateChangedMessage } from './StateChangedMessage'
7
7
import { PromptAIResponseMessage } from './PromptAIResponseMessage'
8
+ import { PreviewDimensionResponseMessage } from './PreviewDimensionResponseMessage'
8
9
9
10
/**
10
11
* The plugin container's sends it's state to the plugin
@@ -14,6 +15,9 @@ export type OnStateChangeMessage = (message: StateChangedMessage) => void
14
15
export type OnLoadedMessage = ( message : LoadedMessage ) => void
15
16
export type OnAssetSelectMessage = ( message : AssetSelectedMessage ) => void
16
17
export type OnPromptAIMessage = ( message : PromptAIResponseMessage ) => void
18
+ export type OnPreviewDimensionMessage = (
19
+ message : PreviewDimensionResponseMessage ,
20
+ ) => void
17
21
export type OnContextRequestMessage = ( message : ContextRequestMessage ) => void
18
22
export type OnUserContextRequestMessage = (
19
23
message : UserContextRequestMessage ,
Original file line number Diff line number Diff line change
1
+ import {
2
+ type PreviewDimensionResponseMessage ,
3
+ isPreviewDimensionResponse ,
4
+ } from './PreviewDimensionResponseMessage'
5
+
6
+ const stub : PreviewDimensionResponseMessage = {
7
+ action : 'preview-dimension' ,
8
+ uid : '-preview' ,
9
+ callbackId : 'test-callback-id' ,
10
+ }
11
+
12
+ describe ( 'PreviewDimensionResponseMessage' , function ( ) {
13
+ it ( 'is a message to plugin' , ( ) => {
14
+ expect ( isPreviewDimensionResponse ( stub ) ) . toEqual ( true )
15
+ } )
16
+ describe ( 'the action property' , ( ) => {
17
+ it ( 'equals "preview-dimension"' , ( ) => {
18
+ expect (
19
+ isPreviewDimensionResponse ( {
20
+ ...stub ,
21
+ action : 'preview-dimension' ,
22
+ } ) ,
23
+ ) . toEqual ( true )
24
+ expect (
25
+ isPreviewDimensionResponse ( {
26
+ ...stub ,
27
+ action : 'something-else' ,
28
+ } ) ,
29
+ ) . toEqual ( false )
30
+ } )
31
+ } )
32
+ } )
Original file line number Diff line number Diff line change
1
+ import { isMessageToPlugin , type MessageToPlugin } from './MessageToPlugin'
2
+
3
+ export type PreviewDimensionResponseMessage =
4
+ MessageToPlugin < 'preview-dimension' >
5
+
6
+ export const isPreviewDimensionResponse = (
7
+ data : unknown ,
8
+ ) : data is PreviewDimensionResponseMessage =>
9
+ isMessageToPlugin ( data ) && data . action === 'preview-dimension'
Original file line number Diff line number Diff line change @@ -9,5 +9,6 @@ export * from './UserContextRequestMessage'
9
9
export * from './MessageToPlugin'
10
10
export * from './StoryData'
11
11
export * from './Asset'
12
+ export * from './PreviewDimensionResponseMessage'
12
13
export * from './PromptAIResponseMessage'
13
14
export * from './UserData'
Original file line number Diff line number Diff line change @@ -331,6 +331,12 @@ const useSandbox = (
331
331
const onSetPreviewDimension = useCallback (
332
332
( message : PreviewDimensionChangeMessage ) => {
333
333
setPreviewDimension ( message . data )
334
+
335
+ postToPlugin ( {
336
+ uid,
337
+ action : 'preview-dimension' ,
338
+ callbackId : message . callbackId ,
339
+ } )
334
340
} ,
335
341
[ ] ,
336
342
)
You can’t perform that action at this time.
0 commit comments