{"version":3,"file":"limitless-angular-sanity-visual-editing-helpers.mjs","sources":["../../../../packages/sanity/visual-editing-helpers/src/comlinkCompatibility.ts","../../../../packages/sanity/visual-editing-helpers/src/limitless-angular-sanity-visual-editing-helpers.ts"],"sourcesContent":["import {\n  createListenLogic,\n  createRequestMachine,\n  DOMAIN,\n  MSG_DISCONNECT,\n  MSG_HANDSHAKE_ACK,\n  MSG_HANDSHAKE_SYN,\n  MSG_HANDSHAKE_SYN_ACK,\n  MSG_HEARTBEAT,\n  MSG_RESPONSE,\n  type InternalMessageType,\n  type Message,\n  type ProtocolMessage,\n  type RequestMachineContext,\n} from '@sanity/comlink';\nimport type {\n  LoaderControllerMsg,\n  LoaderNodeMsg,\n  PreviewKitNodeMsg,\n  VisualEditingControllerMsg,\n  VisualEditingNodeMsg,\n} from './types';\n\ntype ComlinkMessageType =\n  | InternalMessageType\n  | (\n      | LoaderControllerMsg\n      | LoaderNodeMsg\n      | PreviewKitNodeMsg\n      | VisualEditingControllerMsg\n      | VisualEditingNodeMsg\n    )['type'];\n\ntype ChannelsMessageType =\n  | 'handshake/syn'\n  | 'handshake/syn-ack'\n  | 'handshake/ack'\n  | 'channel/response'\n  | 'channel/heartbeat'\n  | 'channel/disconnect'\n  | 'overlay/focus'\n  | 'overlay/navigate'\n  | 'overlay/toggle'\n  | 'presentation/toggleOverlay';\n\nconst channelsToComlinkMap: {\n  [key in ChannelsMessageType]: ComlinkMessageType;\n} = {\n  'handshake/syn': MSG_HANDSHAKE_SYN,\n  'handshake/syn-ack': MSG_HANDSHAKE_SYN_ACK,\n  'handshake/ack': MSG_HANDSHAKE_ACK,\n  'channel/response': MSG_RESPONSE,\n  'channel/heartbeat': MSG_HEARTBEAT,\n  'channel/disconnect': MSG_DISCONNECT,\n  'overlay/focus': 'visual-editing/focus',\n  'overlay/navigate': 'visual-editing/navigate',\n  'overlay/toggle': 'visual-editing/toggle',\n  'presentation/toggleOverlay': 'presentation/toggle-overlay',\n};\n\nconst comlinkToChannelsMap: {\n  [key in ComlinkMessageType]?: ChannelsMessageType;\n} = {\n  [MSG_HANDSHAKE_SYN]: 'handshake/syn',\n  [MSG_HANDSHAKE_SYN_ACK]: 'handshake/syn-ack',\n  [MSG_HANDSHAKE_ACK]: 'handshake/ack',\n  [MSG_RESPONSE]: 'channel/response',\n  [MSG_HEARTBEAT]: 'channel/heartbeat',\n  [MSG_DISCONNECT]: 'channel/disconnect',\n  'visual-editing/focus': 'overlay/focus',\n  'visual-editing/navigate': 'overlay/navigate',\n  'visual-editing/toggle': 'overlay/toggle',\n  'presentation/toggle-overlay': 'presentation/toggleOverlay',\n};\n\nconst convertToComlinkEvent = (\n  event: MessageEvent<ProtocolMessage>,\n): MessageEvent<ProtocolMessage> => {\n  const { data } = event;\n\n  if (\n    data &&\n    typeof data === 'object' &&\n    'domain' in data &&\n    'type' in data &&\n    'from' in data &&\n    'to' in data\n  ) {\n    if (data.domain === 'sanity/channels') {\n      data.domain = DOMAIN;\n    }\n\n    if (data.to === 'overlays') {\n      data.to = 'visual-editing';\n    }\n\n    if (data.from === 'overlays') {\n      data.from = 'visual-editing';\n    }\n\n    data.type =\n      channelsToComlinkMap[data.type as ChannelsMessageType] ?? data.type;\n  }\n\n  return event;\n};\n\nconst convertToChannelsMessage = (\n  message: ProtocolMessage,\n): ProtocolMessage => {\n  if (message.domain === DOMAIN) {\n    message.domain = 'sanity/channels';\n  }\n\n  if (message.to === 'visual-editing') {\n    message.to = 'overlays';\n  }\n\n  if (message.from === 'visual-editing') {\n    message.from = 'overlays';\n  }\n\n  message.type =\n    comlinkToChannelsMap[message.type as ComlinkMessageType] ?? message.type;\n\n  if (\n    message.type === 'channel/response' &&\n    message.responseTo &&\n    !message.data\n  ) {\n    message.data = { responseTo: message.responseTo };\n  }\n\n  if (\n    message.type === 'handshake/syn' ||\n    message.type === 'handshake/syn-ack' ||\n    message.type === 'handshake/ack'\n  ) {\n    message.data = { id: message.connectionId };\n  }\n\n  return message;\n};\n\nconst sendAsChannelsMessage = <S extends Message>(\n  { context }: { context: RequestMachineContext<S> },\n  params: { message: ProtocolMessage },\n): void => {\n  const { sources, targetOrigin } = context;\n\n  const message = convertToChannelsMessage(params.message);\n\n  sources.forEach((source) => {\n    source.postMessage(message, { targetOrigin });\n  });\n};\n\n// @todo Why is this necessary?\nexport {\n  type ListenInput,\n  type Message,\n  type MessageData,\n  type MessageType,\n  MSG_RESPONSE,\n  type ProtocolMessage,\n  type RequestMachineContext,\n  type ResponseMessage,\n} from '@sanity/comlink';\n\nexport const createCompatibilityActors = <T extends Message>(): {\n  listen: ReturnType<typeof createListenLogic>;\n  requestMachine: ReturnType<typeof createRequestMachine<T>>;\n} => ({\n  listen: createListenLogic(convertToComlinkEvent),\n  requestMachine: createRequestMachine<T>().provide({\n    actions: {\n      'send message': sendAsChannelsMessage,\n    },\n  }),\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}