Add Ace to the project (not yet used)

This commit is contained in:
Jos de Jong 2020-07-30 11:42:11 +02:00
parent 98f7cacb55
commit bb2dcf0039
2 changed files with 29 additions and 0 deletions

14
src/logic/aceJson.mjs Normal file
View File

@ -0,0 +1,14 @@
// load Ace editor
import ace from 'ace-builds/src-noconflict/ace'
// load required Ace plugins
import 'ace-builds/src-noconflict/mode-json'
import 'ace-builds/src-noconflict/ext-searchbox'
// embed Ace json worker
// generated via tools/generateWorkerJSONDataUrl.mjs
// https://github.com/ajaxorg/ace/issues/3913
import jsonWorkerDataUrl from '../generated/worker-json-data-url'
ace.config.setModuleUrl('ace/mode/json_worker', jsonWorkerDataUrl)
export const aceJson = ace

View File

@ -0,0 +1,15 @@
import btoa from 'btoa'
import { readFileSync, writeFileSync } from 'fs'
import path from 'path'
import mkdirp from 'mkdirp'
const workerBundleFile = './node_modules/ace-builds/src-noconflict/worker-json.js'
const outputFolder = './src/generated/ace'
const workerEmbeddedFile = path.join(outputFolder, 'jsonWorker.mjs')
// Create an embedded version of the json worker code of Ace editor: a data url
const workerScript = String(readFileSync(workerBundleFile))
const workerDataUrl = 'data:application/javascript;base64,' + btoa(workerScript)
mkdirp.sync(outputFolder)
writeFileSync(workerEmbeddedFile, 'export const jsonWorker = \'' + workerDataUrl + '\'\n')