Spaces:
Runtime error
Runtime error
import blockToImage from './block-to-image'; | |
import createThumbnail from './thumbnail'; | |
import {BLOCKS_DEFAULT_SCALE} from '../layout-constants'; | |
import {Base64} from 'js-base64'; | |
const codePayload = ({blockObjects, topBlockId}) => { | |
const payload = { | |
type: 'script', // Needs to match backpack-server type name | |
name: 'code', // All code currently gets the same name | |
mime: 'application/json', | |
// Backpack expects a base64 encoded string to store. Cannot use btoa because | |
// the code can contain characters outside the 0-255 code-point range supported by btoa | |
body: Base64.encode(JSON.stringify(blockObjects)) // Base64 encode the json | |
}; | |
return blockToImage(topBlockId) | |
.then(createThumbnail) | |
.then(thumbnail => { | |
payload.thumbnail = thumbnail; | |
return payload; | |
}); | |
}; | |
const findTopBlock = payload => { | |
const blocks = payload.extensionURLs ? payload.blocks : payload; | |
return blocks.find(i => i.topLevel); | |
}; | |
const placeInViewport = (payload, workspaceMetrics, isRtl) => { | |
const topBlock = findTopBlock(payload); | |
if (topBlock) { | |
const {scrollX, scrollY, scale} = workspaceMetrics || { | |
scrollX: 0, | |
scrollY: 0, | |
scale: BLOCKS_DEFAULT_SCALE | |
}; | |
const posY = -scrollY + 30; | |
let posX; | |
if (isRtl) { | |
posX = scrollX + 30; | |
} else { | |
posX = -scrollX + 30; | |
} | |
topBlock.x = posX / scale; | |
topBlock.y = posY / scale; | |
} | |
return payload; | |
}; | |
export { | |
codePayload as default, | |
findTopBlock, | |
placeInViewport | |
}; | |