UNPKG

@sanity/visual-editing

Version:

[![npm stat](https://img.shields.io/npm/dm/@sanity/visual-editing.svg?style=flat-square)](https://npm-stat.com/charts.html?package=@sanity/visual-editing) [![npm version](https://img.shields.io/npm/v/@sanity/visual-editing.svg?style=flat-square)](https://

1 lines 7.69 kB
{"version":3,"file":"create-data-attribute.cjs","sources":["../../../visual-editing-helpers/dist/index.js"],"sourcesContent":["import { createListenLogic, createRequestMachine, DOMAIN, MSG_HANDSHAKE_SYN, MSG_HANDSHAKE_SYN_ACK, MSG_HANDSHAKE_ACK, MSG_RESPONSE, MSG_HEARTBEAT, MSG_DISCONNECT } from \"@sanity/comlink\";\nimport { MSG_RESPONSE as MSG_RESPONSE2 } from \"@sanity/comlink\";\nimport { studioPath } from \"@sanity/client/csm\";\nimport { encodeSanityNodeData } from \"./_chunks-es/transformSanityNodeData.js\";\nimport { pathToUrlString, urlStringToPath } from \"./_chunks-es/transformSanityNodeData.js\";\nconst channelsToComlinkMap = {\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}, comlinkToChannelsMap = {\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}, convertToComlinkEvent = (event) => {\n const { data } = event;\n return data && typeof data == \"object\" && \"domain\" in data && \"type\" in data && \"from\" in data && \"to\" in data && (data.domain === \"sanity/channels\" && (data.domain = DOMAIN), data.to === \"overlays\" && (data.to = \"visual-editing\"), data.from === \"overlays\" && (data.from = \"visual-editing\"), data.channelId = data.connectionId, delete data.connectionId, data.type = channelsToComlinkMap[data.type] ?? data.type), event;\n}, convertToChannelsMessage = (comlinkMessage) => {\n const { channelId, ...rest } = comlinkMessage, message = { ...rest, connectionId: channelId };\n return message.domain === DOMAIN && (message.domain = \"sanity/channels\"), message.to === \"visual-editing\" && (message.to = \"overlays\"), message.from === \"visual-editing\" && (message.from = \"overlays\"), message.type = comlinkToChannelsMap[message.type] ?? message.type, message.type === \"channel/response\" && message.responseTo && !message.data && (message.data = { responseTo: message.responseTo }), (message.type === \"handshake/syn\" || message.type === \"handshake/syn-ack\" || message.type === \"handshake/ack\") && (message.data = { id: message.connectionId }), message;\n}, sendAsChannelsMessage = ({ context }, params) => {\n const { sources, targetOrigin } = context, message = convertToChannelsMessage(params.message);\n sources.forEach((source) => {\n source.postMessage(message, { targetOrigin });\n });\n}, createCompatibilityActors = () => ({\n listen: createListenLogic(convertToComlinkEvent),\n requestMachine: createRequestMachine().provide({\n actions: {\n \"send message\": sendAsChannelsMessage\n }\n })\n});\nfunction createDataAttribute(props) {\n function normalizePath(path) {\n return path ? typeof path == \"string\" ? studioPath.fromString(path) : path : [];\n }\n function toString(props2) {\n if (!props2.id) throw new Error(\"`id` is required to create a data attribute\");\n if (!props2.type) throw new Error(\"`type` is required to create a data attribute\");\n if (!props2.path || !props2.path.length)\n throw new Error(\"`path` is required to create a data attribute\");\n const attrs = {\n baseUrl: props2.baseUrl || \"/\",\n workspace: props2.workspace,\n tool: props2.tool,\n type: props2.type,\n id: props2.id,\n path: typeof props2.path == \"string\" ? props2.path : studioPath.toString(props2.path)\n };\n return encodeSanityNodeData(attrs);\n }\n const DataAttribute = (path) => toString({\n ...props,\n path: [...normalizePath(props.path), ...normalizePath(path)]\n });\n return DataAttribute.toString = function() {\n return toString(props);\n }, DataAttribute.combine = function(attrs) {\n return createDataAttribute({\n ...props,\n ...attrs\n });\n }, DataAttribute.scope = function(path) {\n return createDataAttribute({\n ...props,\n path: [...normalizePath(props.path), ...normalizePath(path)]\n });\n }, DataAttribute;\n}\nfunction getQueryCacheKey(query, params) {\n return `${query}-${typeof params == \"string\" ? params : JSON.stringify(params)}`;\n}\nconst IS_MAC = typeof window < \"u\" && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform), MODIFIERS = {\n alt: \"altKey\",\n ctrl: \"ctrlKey\",\n mod: IS_MAC ? \"metaKey\" : \"ctrlKey\",\n shift: \"shiftKey\"\n};\nfunction isHotkey(keys, event) {\n return keys.every((key) => MODIFIERS[key] ? event[MODIFIERS[key]] : event.key === key.toUpperCase());\n}\nfunction isModKey(event) {\n return event.key === (IS_MAC ? \"Meta\" : \"Ctrl\");\n}\nfunction isAltKey(event) {\n return event.key === \"Alt\";\n}\nexport {\n MSG_RESPONSE2 as MSG_RESPONSE,\n createCompatibilityActors,\n createDataAttribute,\n getQueryCacheKey,\n isAltKey,\n isHotkey,\n isModKey,\n pathToUrlString,\n urlStringToPath\n};\n//# sourceMappingURL=index.js.map\n"],"names":["comlink","require","csm","transformSanityNodeData","channelsToComlinkMap","MSG_HANDSHAKE_SYN","MSG_HANDSHAKE_SYN_ACK","MSG_HANDSHAKE_ACK","MSG_RESPONSE","MSG_HEARTBEAT","MSG_DISCONNECT","comlinkToChannelsMap","convertToComlinkEvent","event","data","domain","DOMAIN","to","from","channelId","connectionId","type","sendAsChannelsMessage","context","params","sources","targetOrigin","message","comlinkMessage","rest","responseTo","id","convertToChannelsMessage","forEach","source","postMessage","createCompatibilityActors","listen","createListenLogic","requestMachine","createRequestMachine","provide","actions"],"mappings":"aA6CA,IAAAA,EAAAC,QAAA,mBAAAC,EAAAD,QAAA,sBAAAE,EAAAF,QAAA,iCAAA,MAAMG,EAA2E,CAC/E,gBAAiBC,EAAAA,kBACjB,oBAAqBC,EAAAA,sBACrB,gBAAiBC,EAAAA,kBACjB,mBAAoBC,EAAAA,aACpB,oBAAqBC,EAAAA,cACrB,qBAAsBC,EAAAA,eACtB,gBAAiB,uBACjB,mBAAoB,0BACpB,iBAAkB,wBAClB,6BAA8B,+BAG1BC,EAA4E,CAChF,CAACN,EAAiBA,mBAAG,gBACrB,CAACC,EAAqBA,uBAAG,oBACzB,CAACC,EAAiBA,mBAAG,gBACrB,CAACC,EAAYA,cAAG,mBAChB,CAACC,EAAaA,eAAG,oBACjB,CAACC,EAAcA,gBAAG,qBAClB,uBAAwB,gBACxB,0BAA2B,mBAC3B,wBAAyB,iBACzB,8BAA+B,8BAK3BE,EAAgFC,IAC9E,MAAAC,KAACA,GAAQD,EAGbC,OAAAA,GACgB,iBAATA,GACP,WAAYA,GACZ,SAAUA,GACV,SAAUA,GACV,OAAQA,IAEY,oBAAhBA,EAAKC,SACPD,EAAKC,OAASC,UAGA,aAAZF,EAAKG,KACPH,EAAKG,GAAK,kBAGM,aAAdH,EAAKI,OACPJ,EAAKI,KAAO,kBAGdJ,EAAKK,UAAYL,EAAKM,oBACfN,EAAKM,aAEZN,EAAKO,KAAOjB,EAAqBU,EAAKO,OAAgCP,EAAKO,MAGtER,CAAAA,EAoCHS,EAAwBA,EAC3BC,WACDC,KAEM,MAAAC,QAACA,EAAAA,aAASC,GAAgBH,EAE1BI,EAvC0BC,CAAgDA,IAC1E,MAAAT,UAACA,KAAcU,GAAQD,EACvBD,EAAU,IAAIE,EAAMT,aAAcD,GAEpC,OAAAQ,EAAQZ,SAAWC,EACrBW,SAAAA,EAAQZ,OAAS,mBAGA,mBAAfY,EAAQV,KACVU,EAAQV,GAAK,YAGM,mBAAjBU,EAAQT,OACVS,EAAQT,KAAO,YAGjBS,EAAQN,KAAOV,EAAqBgB,EAAQN,OAA+BM,EAAQN,KAE9D,qBAAjBM,EAAQN,MAA+BM,EAAQG,aAAeH,EAAQb,OACxEa,EAAQb,KAAO,CAACgB,WAAYH,EAAQG,cAInB,kBAAjBH,EAAQN,MACS,sBAAjBM,EAAQN,MACS,kBAAjBM,EAAQN,QAERM,EAAQb,KAAO,CAACiB,GAAIJ,EAAQP,eAGvBO,CAAAA,EASSK,CAAyBR,EAAOG,SAExCM,EAAAA,SAAoBC,IAC1BA,EAAOC,YAAYR,EAAS,CAACD,gBAAa,GAC3C,wPAesCU,KAGjC,CACNC,OAAQC,oBAAkB1B,GAC1B2B,eAAgBC,EAAAA,uBAA0BC,QAAQ,CAChDC,QAAS,CACP,eAAgBpB"}