diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 00000000000..1aa6a702645
Binary files /dev/null and b/.DS_Store differ
diff --git a/.gitignore b/.gitignore
index 6c7f73ae134..8840bafdf94 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
.DS_Store
-node_modules/
-dist/
-src/public/app-dist/
+code/node_modules/
+code/dist/
+code/src/public/app-dist/
npm-debug.log
yarn-error.log
*.db
@@ -11,5 +11,7 @@ cert.crt
server-package.json
.idea/httpRequests/
data/
-tmp/
-.eslintcache
\ No newline at end of file
+code/data/
+code/tmp/
+code/.eslintcache
+code/db-data
\ No newline at end of file
diff --git a/bin/better-sqlite3/linux-desktop-better_sqlite3.node b/bin/better-sqlite3/linux-desktop-better_sqlite3.node
deleted file mode 100644
index 18018630773..00000000000
Binary files a/bin/better-sqlite3/linux-desktop-better_sqlite3.node and /dev/null differ
diff --git a/bin/better-sqlite3/linux-server-better_sqlite3.node b/bin/better-sqlite3/linux-server-better_sqlite3.node
deleted file mode 100644
index ca173a3c63f..00000000000
Binary files a/bin/better-sqlite3/linux-server-better_sqlite3.node and /dev/null differ
diff --git a/bin/better-sqlite3/mac-better_sqlite3.node b/bin/better-sqlite3/mac-better_sqlite3.node
deleted file mode 100644
index 70835a3f860..00000000000
Binary files a/bin/better-sqlite3/mac-better_sqlite3.node and /dev/null differ
diff --git a/bin/better-sqlite3/win-better_sqlite3.node b/bin/better-sqlite3/win-better_sqlite3.node
deleted file mode 100644
index b5ced20b542..00000000000
Binary files a/bin/better-sqlite3/win-better_sqlite3.node and /dev/null differ
diff --git a/bin/build-debian.sh b/bin/build-debian.sh
deleted file mode 100755
index f60b99d196f..00000000000
--- a/bin/build-debian.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env bash
-
-echo "Packaging debian x64 distribution..."
-
-VERSION=`jq -r ".version" package.json`
-
-./node_modules/.bin/electron-installer-debian --config bin/deb-options.json --options.version=${VERSION} --arch amd64
-
-
-# hacky stop-gag measure to produce debian compatible XZ compressed debs until this is fixed: https://github.com/electron-userland/electron-installer-debian/issues/272
-cd dist
-ar x trilium_${VERSION}_amd64.deb
-rm trilium_${VERSION}_amd64.deb
-# recompress
-< control.tar.zst zstd -d | xz > control.tar.xz
-< data.tar.zst zstd -d | xz > data.tar.xz
-# create deb archive (I really do not know, what argument "sdsd" is for but something is required for ar to create the archive as desired)
-ar -m -c -a sdsd trilium_${VERSION}_amd64.deb debian-binary control.tar.xz data.tar.xz
-
-rm control* data* debian-binary
-
-echo "Converted to XZ deb"
diff --git a/bin/build-docker.sh b/bin/build-docker.sh
deleted file mode 100755
index c77850ebad3..00000000000
--- a/bin/build-docker.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env bash
-
-VERSION=`jq -r ".version" package.json`
-SERIES=${VERSION:0:4}-latest
-
-cat package.json | grep -v electron > server-package.json
-
-sudo docker build -t zadam/trilium:$VERSION --network host -t zadam/trilium:$SERIES .
-
-if [[ $VERSION != *"beta"* ]]; then
- sudo docker tag zadam/trilium:$VERSION zadam/trilium:latest
-fi
diff --git a/bin/build-linux-x64.sh b/bin/build-linux-x64.sh
deleted file mode 100755
index 5710bba9107..00000000000
--- a/bin/build-linux-x64.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env bash
-
-SRC_DIR=./dist/trilium-linux-x64-src
-
-if [ "$1" != "DONTCOPY" ]
-then
- ./bin/copy-trilium.sh $SRC_DIR
-fi
-
-rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
-
-echo "Copying required linux-x64 binaries"
-
-cp -r bin/better-sqlite3/linux-desktop-better_sqlite3.node $SRC_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
-
-echo "Packaging linux x64 electron build"
-
-./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=linux --arch=x64 --overwrite
-
-BUILD_DIR=./dist/trilium-linux-x64
-rm -rf $BUILD_DIR
-
-mv "./dist/Trilium Notes-linux-x64" $BUILD_DIR
-
-cp images/app-icons/png/128x128.png $BUILD_DIR/icon.png
-
-cp bin/tpl/anonymize-database.sql $BUILD_DIR/
-
-cp -r dump-db $BUILD_DIR/
-rm -rf $BUILD_DIR/dump-db/node_modules
-
-cp bin/tpl/trilium-portable.sh $BUILD_DIR/
-chmod 755 $BUILD_DIR/trilium-portable.sh
-
-cp bin/tpl/trilium-safe-mode.sh $BUILD_DIR/
-chmod 755 $BUILD_DIR/trilium-safe-mode.sh
-
-cp bin/tpl/trilium-no-cert-check.sh $BUILD_DIR/
-chmod 755 $BUILD_DIR/trilium-no-cert-check.sh
-
-echo "Packaging linux x64 electron distribution..."
-VERSION=`jq -r ".version" package.json`
-
-cd dist
-
-tar cJf trilium-linux-x64-${VERSION}.tar.xz trilium-linux-x64
-
-cd ..
-
-bin/build-debian.sh
diff --git a/bin/build-mac-x64.sh b/bin/build-mac-x64.sh
deleted file mode 100755
index 0e63c7fb204..00000000000
--- a/bin/build-mac-x64.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env bash
-
-SRC_DIR=./dist/trilium-mac-x64-src
-
-if [ "$1" != "DONTCOPY" ]
-then
- ./bin/copy-trilium.sh $SRC_DIR
-fi
-
-echo "Copying required mac binaries"
-
-cp -r bin/better-sqlite3/mac-better_sqlite3.node $SRC_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
-
-rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
-
-echo "Packaging mac x64 electron build"
-
-./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=darwin --arch=x64 --overwrite --icon=images/app-icons/mac/icon.icns
-
-BUILD_DIR=./dist/trilium-mac-x64
-rm -rf $BUILD_DIR
-
-# Mac build has by default useless directory level
-mv "./dist/Trilium Notes-darwin-x64" $BUILD_DIR
-
-cp bin/tpl/anonymize-database.sql $BUILD_DIR/
-
-cp -r dump-db $BUILD_DIR/
-rm -rf $BUILD_DIR/dump-db/node_modules
-
-echo "Zipping mac x64 electron distribution..."
-
-VERSION=`jq -r ".version" package.json`
-
-cd dist
-
-rm trilium-mac-x64-${VERSION}.zip
-zip -r9 --symlinks trilium-mac-x64-${VERSION}.zip trilium-mac-x64
diff --git a/bin/build-server.sh b/bin/build-server.sh
deleted file mode 100755
index 74a4896d61b..00000000000
--- a/bin/build-server.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env bash
-
-PKG_DIR=dist/trilium-linux-x64-server
-NODE_VERSION=18.16.1
-
-if [ "$1" != "DONTCOPY" ]
-then
- ./bin/copy-trilium.sh $PKG_DIR
-fi
-
-cd dist
-wget https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz
-tar xfJ node-v${NODE_VERSION}-linux-x64.tar.xz
-rm node-v${NODE_VERSION}-linux-x64.tar.xz
-cd ..
-
-mv dist/node-v${NODE_VERSION}-linux-x64 $PKG_DIR/node
-
-rm -r $PKG_DIR/node/lib/node_modules/npm
-rm -r $PKG_DIR/node/include/node
-
-rm -r $PKG_DIR/node_modules/electron*
-rm -r $PKG_DIR/webpack*
-rm -r $PKG_DIR/electron.js
-
-cp -r bin/better-sqlite3/linux-server-better_sqlite3.node $PKG_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
-
-printf "#!/bin/sh\n./node/bin/node src/www" > $PKG_DIR/trilium.sh
-chmod 755 $PKG_DIR/trilium.sh
-
-cp bin/tpl/anonymize-database.sql $PKG_DIR/
-
-cp -r dump-db $PKG_DIR/
-rm -rf $PKG_DIR/dump-db/node_modules
-
-VERSION=`jq -r ".version" package.json`
-
-cd dist
-
-tar cJf trilium-linux-x64-server-${VERSION}.tar.xz trilium-linux-x64-server
diff --git a/bin/build-win-x64.sh b/bin/build-win-x64.sh
deleted file mode 100755
index 37bc2813731..00000000000
--- a/bin/build-win-x64.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env bash
-
-SRC_DIR=./dist/trilium-windows-x64-src
-
-if [ "$1" != "DONTCOPY" ]
-then
- ./bin/copy-trilium.sh $SRC_DIR
-fi
-
-echo "Copying required windows binaries"
-
-cp -r bin/better-sqlite3/win-better_sqlite3.node $SRC_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
-
-rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
-
-echo "Packaging windows x64 electron build"
-
-./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=win32 --arch=x64 --overwrite --icon=images/app-icons/win/icon.ico
-
-BUILD_DIR=./dist/trilium-windows-x64
-rm -rf $BUILD_DIR
-
-mv "./dist/Trilium Notes-win32-x64" $BUILD_DIR
-
-cp bin/tpl/anonymize-database.sql $BUILD_DIR/
-
-cp -r dump-db $BUILD_DIR/
-rm -rf $BUILD_DIR/dump-db/node_modules
-
-cp bin/tpl/trilium-{portable,no-cert-check,safe-mode}.bat $BUILD_DIR/
-
-echo "Zipping windows x64 electron distribution..."
-VERSION=`jq -r ".version" package.json`
-
-cd dist
-
-zip -r9 trilium-windows-x64-${VERSION}.zip trilium-windows-x64
diff --git a/bin/build.sh b/bin/build.sh
deleted file mode 100755
index ff90c288d95..00000000000
--- a/bin/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-
-echo "Deleting existing builds"
-
-rm -rf dist/*
-
-SRC_DIR=dist/trilium-src
-
-bin/copy-trilium.sh $SRC_DIR
-
-# we'll just copy the same SRC dir to all the builds so we don't have to do npm install in each separately
-cp -r $SRC_DIR ./dist/trilium-linux-x64-src
-cp -r $SRC_DIR ./dist/trilium-linux-x64-server
-cp -r $SRC_DIR ./dist/trilium-windows-x64-src
-cp -r $SRC_DIR ./dist/trilium-mac-x64-src
-
-bin/build-win-x64.sh DONTCOPY
-
-bin/build-mac-x64.sh DONTCOPY
-
-bin/build-linux-x64.sh DONTCOPY
-
-bin/build-server.sh DONTCOPY
diff --git a/bin/copy-trilium.sh b/bin/copy-trilium.sh
deleted file mode 100755
index 2f4053e1574..00000000000
--- a/bin/copy-trilium.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env bash
-
-if [[ $# -eq 0 ]] ; then
- echo "Missing argument of target directory"
- exit 1
-fi
-
-n exec 18.16.1 npm run webpack
-
-DIR=$1
-
-rm -rf $DIR
-mkdir $DIR
-
-echo "Copying Trilium to build directory $DIR"
-
-cp -r images $DIR/
-cp -r libraries $DIR/
-cp -r src $DIR/
-cp -r db $DIR/
-cp -r package.json $DIR/
-cp -r package-lock.json $DIR/
-cp -r README.md $DIR/
-cp -r LICENSE $DIR/
-cp -r config-sample.ini $DIR/
-cp -r electron.js $DIR/
-cp webpack-* $DIR/
-
-# run in subshell (so we return to original dir)
-(cd $DIR && n exec 18.16.1 npm install --only=prod)
-
-# cleanup of useless files in dependencies
-rm -r $DIR/node_modules/image-q/demo
-rm -r $DIR/node_modules/better-sqlite3/Release
-rm -r $DIR/node_modules/better-sqlite3/deps/sqlite3.tar.gz
-rm -r $DIR/node_modules/@jimp/plugin-print/fonts
-rm -r $DIR/node_modules/jimp/browser
-rm -r $DIR/node_modules/jimp/fonts
-
-# delete all tests (there are often large images as test file for jimp etc.)
-find $DIR/node_modules -name test -exec rm -rf {} \;
-find $DIR/node_modules -name docs -exec rm -rf {} \;
-find $DIR/node_modules -name demo -exec rm -rf {} \;
-
-find $DIR/libraries -name "*.map" -type f -delete
-
-cp $DIR/src/public/app/share.js $DIR/src/public/app-dist/
-cp -r $DIR/src/public/app/doc_notes $DIR/src/public/app-dist/
-
-rm -rf $DIR/src/public/app
diff --git a/bin/deb-options.json b/bin/deb-options.json
deleted file mode 100644
index e9a02348ba6..00000000000
--- a/bin/deb-options.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "src": "dist/trilium-linux-x64",
- "dest": "dist/",
- "name": "trilium",
- "productName": "Trilium Notes",
- "genericName": "Note taker",
- "description": "Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases.",
- "sections": "misc",
- "maintainer": "zadam.apps@gmail.com",
- "homepage": "https://github.com/zadam/trilium",
- "bin": "trilium",
- "icon": "dist/trilium-linux-x64/icon.png",
- "categories": [ "Office" ]
-}
\ No newline at end of file
diff --git a/bin/export-schema.sh b/bin/export-schema.sh
deleted file mode 100755
index ab5de1a8156..00000000000
--- a/bin/export-schema.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env bash
-
-SCHEMA_FILE_PATH=db/schema.sql
-
-sqlite3 ./data/document.db .schema | grep -v "sqlite_sequence" > "$SCHEMA_FILE_PATH"
-
-echo "DB schema exported to $SCHEMA_FILE_PATH"
\ No newline at end of file
diff --git a/bin/generate-cert.sh b/bin/generate-cert.sh
deleted file mode 100755
index dd208dfe55e..00000000000
--- a/bin/generate-cert.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-# Script generates certificate by default into the ~/trilium-data/cert where it is expected by Trilium
-# If directory is given in argument, certificate will be created there.
-
-if [ $# -eq 0 ]
- then
- DIR=~/trilium-data/cert
-else
- DIR=$1
-fi
-
-mkdir -p "$DIR"
-cd "$DIR"
-
-openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes -out cert.crt -keyout key.key
diff --git a/bin/push-docker-image.sh b/bin/push-docker-image.sh
deleted file mode 100755
index 0372143cf14..00000000000
--- a/bin/push-docker-image.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-
-if [[ $# -eq 0 ]] ; then
- echo "Missing argument of new version"
- exit 1
-fi
-
-VERSION=$1
-SERIES=${VERSION:0:4}-latest
-
-docker push zadam/trilium:$VERSION
-docker push zadam/trilium:$SERIES
-
-if [[ $1 != *"beta"* ]]; then
- docker push zadam/trilium:latest
-fi
diff --git a/bin/release-flatpack.sh b/bin/release-flatpack.sh
deleted file mode 100755
index f28ff7adb08..00000000000
--- a/bin/release-flatpack.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env bash
-
-if [[ $# -eq 0 ]] ; then
- echo "Missing argument of new version"
- exit 1
-fi
-
-VERSION=$1
-
-if ! [[ ${VERSION} =~ ^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}(-.+)?$ ]] ;
-then
- echo "Version ${VERSION} isn't in format X.Y.Z"
- exit 1
-fi
-
-VERSION_DATE=$(git log -1 --format=%aI "v${VERSION}" | cut -c -10)
-VERSION_COMMIT=$(git rev-list -n 1 "v${VERSION}")
-
-# expecting the directory at a specific path
-cd ~/trilium-flathub || exit
-
-if ! git diff-index --quiet HEAD --; then
- echo "There are uncommitted changes"
- exit 1
-fi
-
-BASE_BRANCH=master
-
-if [[ "$VERSION" == *"beta"* ]]; then
- BASE_BRANCH=beta
-fi
-
-git switch "${BASE_BRANCH}"
-git pull
-
-BRANCH=b${VERSION}
-
-git branch "${BRANCH}"
-git switch "${BRANCH}"
-
-echo "Updating files with version ${VERSION}, date ${VERSION_DATE} and commit ${VERSION_COMMIT}"
-
-flatpak-node-generator npm ../trilium/package-lock.json
-
-xmlstarlet ed --inplace --update "/component/releases/release/@version" --value "${VERSION}" --update "/component/releases/release/@date" --value "${VERSION_DATE}" ./com.github.zadam.trilium.metainfo.xml
-
-yq --inplace "(.modules[0].sources[0].tag = \"v${VERSION}\") | (.modules[0].sources[0].commit = \"${VERSION_COMMIT}\")" ./com.github.zadam.trilium.yml
-
-git add ./generated-sources.json
-git add ./com.github.zadam.trilium.metainfo.xml
-git add ./com.github.zadam.trilium.yml
-
-git commit -m "release $VERSION"
-git push --set-upstream origin "${BRANCH}"
-
-gh pr create --fill -B "${BASE_BRANCH}"
-gh pr merge --auto --merge --delete-branch
diff --git a/bin/release.sh b/bin/release.sh
deleted file mode 100755
index cdaa324d2c9..00000000000
--- a/bin/release.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env bash
-
-export GITHUB_REPO=trilium
-
-if [[ $# -eq 0 ]] ; then
- echo "Missing argument of new version"
- exit 1
-fi
-
-VERSION=$1
-
-if ! [[ ${VERSION} =~ ^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}(-.+)?$ ]] ;
-then
- echo "Version ${VERSION} isn't in format X.Y.Z"
- exit 1
-fi
-
-if ! git diff-index --quiet HEAD --; then
- echo "There are uncommitted changes"
- exit 1
-fi
-
-echo "Releasing Trilium $VERSION"
-
-jq '.version = "'$VERSION'"' package.json|sponge package.json
-
-git add package.json
-
-echo 'module.exports = { buildDate:"'`date --iso-8601=seconds`'", buildRevision: "'`git log -1 --format="%H"`'" };' > src/services/build.js
-
-git add src/services/build.js
-
-TAG=v$VERSION
-
-echo "Committing package.json version change"
-
-git commit -m "release $VERSION"
-git push
-
-echo "Tagging commit with $TAG"
-
-git tag $TAG
-git push origin $TAG
-
-bin/build.sh
-
-LINUX_X64_BUILD=trilium-linux-x64-$VERSION.tar.xz
-DEBIAN_X64_BUILD=trilium_${VERSION}_amd64.deb
-WINDOWS_X64_BUILD=trilium-windows-x64-$VERSION.zip
-MAC_X64_BUILD=trilium-mac-x64-$VERSION.zip
-SERVER_BUILD=trilium-linux-x64-server-$VERSION.tar.xz
-
-echo "Creating release in GitHub"
-
-EXTRA=
-
-if [[ $TAG == *"beta"* ]]; then
- EXTRA=--prerelease
-fi
-
-echo "$GITHUB_CLI_AUTH_TOKEN" | gh auth login --with-token
-
-gh release create "$TAG" \
- --title "$TAG release" \
- --notes "" \
- $EXTRA \
- "dist/$DEBIAN_X64_BUILD" \
- "dist/$LINUX_X64_BUILD" \
- "dist/$WINDOWS_X64_BUILD" \
- "dist/$MAC_X64_BUILD" \
- "dist/$SERVER_BUILD"
diff --git a/bin/tpl/anonymize-database.sql b/bin/tpl/anonymize-database.sql
deleted file mode 100644
index 3e8279eeb6e..00000000000
--- a/bin/tpl/anonymize-database.sql
+++ /dev/null
@@ -1,165 +0,0 @@
-
-UPDATE etapi_tokens SET tokenHash = 'API token hash value';
-UPDATE notes SET title = 'title' WHERE noteId != 'root' AND noteId NOT LIKE '\_%' ESCAPE '\';
-UPDATE blobs SET content = 'text' WHERE content IS NOT NULL;
-UPDATE revisions SET title = 'title';
-
-UPDATE attributes SET name = 'name', value = 'value'
- WHERE type = 'label'
- AND name NOT IN ('inbox',
- 'disableVersioning',
- 'calendarRoot',
- 'archived',
- 'excludeFromExport',
- 'disableInclusion',
- 'appCss',
- 'appTheme',
- 'hidePromotedAttributes',
- 'readOnly',
- 'autoReadOnlyDisabled',
- 'cssClass',
- 'iconClass',
- 'keyboardShortcut',
- 'run',
- 'runOnInstance',
- 'runAtHour',
- 'customRequestHandler',
- 'customResourceProvider',
- 'widget',
- 'noteInfoWidgetDisabled',
- 'linkMapWidgetDisabled',
- 'revisionsWidgetDisabled',
- 'whatLinksHereWidgetDisabled',
- 'similarNotesWidgetDisabled',
- 'workspace',
- 'workspaceIconClass',
- 'workspaceTabBackgroundColor',
- 'searchHome',
- 'workspaceInbox',
- 'workspaceSearchHome',
- 'sqlConsoleHome',
- 'datePattern',
- 'pageSize',
- 'viewType',
- 'mapRootNoteId',
- 'bookmarkFolder',
- 'sorted',
- 'top',
- 'fullContentWidth',
- 'shareHiddenFromTree',
- 'shareAlias',
- 'shareOmitDefaultCss',
- 'shareRoot',
- 'internalLink',
- 'imageLink',
- 'relationMapLink',
- 'includeMapLink',
- 'runOnNoteCreation',
- 'runOnNoteTitleChange',
- 'runOnNoteContentChange',
- 'runOnNoteChange',
- 'runOnChildNoteCreation',
- 'runOnAttributeCreation',
- 'runOnAttributeChange',
- 'template',
- 'inherit',
- 'widget',
- 'renderNote',
- 'shareCss',
- 'shareJs',
- 'shareFavicon',
- 'executeButton',
- 'keepCurrentHoisting',
- 'color',
- 'toc',
- 'excludeFromNoteMap',
- 'docName',
- 'launcherType',
- 'builtinWidget',
- 'baseSize',
- 'growthFactor'
- );
-
-UPDATE attributes SET name = 'name'
- AND name NOT IN ('inbox',
- 'disableVersioning',
- 'calendarRoot',
- 'archived',
- 'excludeFromExport',
- 'disableInclusion',
- 'appCss',
- 'appTheme',
- 'hidePromotedAttributes',
- 'readOnly',
- 'autoReadOnlyDisabled',
- 'cssClass',
- 'iconClass',
- 'keyboardShortcut',
- 'run',
- 'runOnInstance',
- 'runAtHour',
- 'customRequestHandler',
- 'customResourceProvider',
- 'widget',
- 'noteInfoWidgetDisabled',
- 'linkMapWidgetDisabled',
- 'revisionsWidgetDisabled',
- 'whatLinksHereWidgetDisabled',
- 'similarNotesWidgetDisabled',
- 'workspace',
- 'workspaceIconClass',
- 'workspaceTabBackgroundColor',
- 'searchHome',
- 'workspaceInbox',
- 'workspaceSearchHome',
- 'sqlConsoleHome',
- 'datePattern',
- 'pageSize',
- 'viewType',
- 'mapRootNoteId',
- 'bookmarkFolder',
- 'sorted',
- 'top',
- 'fullContentWidth',
- 'shareHiddenFromTree',
- 'shareAlias',
- 'shareOmitDefaultCss',
- 'shareRoot',
- 'internalLink',
- 'imageLink',
- 'relationMapLink',
- 'includeMapLink',
- 'runOnNoteCreation',
- 'runOnNoteTitleChange',
- 'runOnNoteContentChange',
- 'runOnNoteChange',
- 'runOnChildNoteCreation',
- 'runOnAttributeCreation',
- 'runOnAttributeChange',
- 'template',
- 'inherit',
- 'widget',
- 'renderNote',
- 'shareCss',
- 'shareJs',
- 'shareFavicon',
- 'executeButton',
- 'keepCurrentHoisting',
- 'color',
- 'toc',
- 'excludeFromNoteMap',
- 'docName',
- 'launcherType',
- 'builtinWidget',
- 'baseSize',
- 'growthFactor'
- );
-
-UPDATE branches SET prefix = 'prefix' WHERE prefix IS NOT NULL AND prefix != 'recovered';
-UPDATE options SET value = 'anonymized' WHERE name IN
- ('documentId', 'documentSecret', 'encryptedDataKey',
- 'passwordVerificationHash', 'passwordVerificationSalt',
- 'passwordDerivedKeySalt', 'username', 'syncServerHost', 'syncProxy')
- AND value != '';
-
-VACUUM;
diff --git a/bin/tpl/trilium-no-cert-check.bat b/bin/tpl/trilium-no-cert-check.bat
deleted file mode 100644
index 360064bdc4b..00000000000
--- a/bin/tpl/trilium-no-cert-check.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@echo off
-:: Try to get powershell to launch Trilium since it deals with UTF-8 characters in current path
-:: If there's no powershell available, fallback to unicode enabled command interpreter
-
-WHERE powershell.exe > NUL 2>&1
-IF %ERRORLEVEL% NEQ 0 GOTO BATCH ELSE GOTO POWERSHELL
-
-:POWERSHELL
-powershell -ExecutionPolicy Bypass -NonInteractive -NoLogo "Set-Item -Path Env:NODE_TLS_REJECT_UNAUTHORIZED -Value 0; ./trilium.exe"
-GOTO END
-
-:BATCH
-:: Make sure we support UTF-8 characters
-chcp 65001
-
-:: Get Current Trilium executable directory and compute data directory
-SET DIR=%~dp0
-set NODE_TLS_REJECT_UNAUTHORIZED=0
-cd %DIR%
-start trilium.exe
-GOTO END
-
-:END
diff --git a/bin/tpl/trilium-no-cert-check.sh b/bin/tpl/trilium-no-cert-check.sh
deleted file mode 100644
index 42ec8bb81d5..00000000000
--- a/bin/tpl/trilium-no-cert-check.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env sh
-
-DIR=`dirname "$0"`
-export NODE_TLS_REJECT_UNAUTHORIZED=0
-
-"$DIR/trilium"
-
diff --git a/bin/tpl/trilium-portable.bat b/bin/tpl/trilium-portable.bat
deleted file mode 100644
index a89476ae0fc..00000000000
--- a/bin/tpl/trilium-portable.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@echo off
-:: Try to get powershell to launch Trilium since it deals with UTF-8 characters in current path
-:: If there's no powershell available, fallback to unicode enabled command interpreter
-
-WHERE powershell.exe > NUL 2>&1
-IF %ERRORLEVEL% NEQ 0 GOTO BATCH ELSE GOTO POWERSHELL
-
-:POWERSHELL
-powershell -ExecutionPolicy Bypass -NonInteractive -NoLogo "Set-Item -Path Env:TRILIUM_DATA_DIR -Value './trilium-data'; ./trilium.exe"
-GOTO END
-
-:BATCH
-:: Make sure we support UTF-8 characters
-chcp 65001
-
-:: Get Current Trilium executable directory and compute data directory
-SET DIR=%~dp0
-SET TRILIUM_DATA_DIR=%DIR%\trilium-data
-cd %DIR%
-start trilium.exe
-GOTO END
-
-:END
diff --git a/bin/tpl/trilium-portable.sh b/bin/tpl/trilium-portable.sh
deleted file mode 100755
index 04edfde4769..00000000000
--- a/bin/tpl/trilium-portable.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env sh
-
-DIR=`dirname "$0"`
-export TRILIUM_DATA_DIR="$DIR/trilium-data"
-
-"$DIR/trilium"
-
diff --git a/bin/tpl/trilium-safe-mode.bat b/bin/tpl/trilium-safe-mode.bat
deleted file mode 100644
index 7692ec7dc33..00000000000
--- a/bin/tpl/trilium-safe-mode.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@echo off
-:: Try to get powershell to launch Trilium since it deals with UTF-8 characters in current path
-:: If there's no powershell available, fallback to unicode enabled command interpreter
-
-WHERE powershell.exe > NUL 2>&1
-IF %ERRORLEVEL% NEQ 0 GOTO BATCH ELSE GOTO POWERSHELL
-
-:POWERSHELL
-powershell -ExecutionPolicy Bypass -NonInteractive -NoLogo "Set-Item -Path Env:TRILIUM_SAFE_MODE -Value 1; ./trilium.exe --disable-gpu"
-GOTO END
-
-:BATCH
-:: Make sure we support UTF-8 characters
-chcp 65001
-
-:: Get Current Trilium executable directory and compute data directory
-SET DIR=%~dp0
-SET TRILIUM_SAFE_MODE=1
-cd %DIR%
-start trilium.exe --disable-gpu
-GOTO END
-
-:END
diff --git a/bin/tpl/trilium-safe-mode.sh b/bin/tpl/trilium-safe-mode.sh
deleted file mode 100644
index 5221d4d6110..00000000000
--- a/bin/tpl/trilium-safe-mode.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env sh
-
-DIR=`dirname "$0"`
-export TRILIUM_SAFE_MODE=1
-
-"$DIR/trilium" --disable-gpu
-
diff --git a/build/Dockerfile b/build/Dockerfile
new file mode 100644
index 00000000000..b9a90d4d1ca
--- /dev/null
+++ b/build/Dockerfile
@@ -0,0 +1,27 @@
+FROM ubuntu
+
+ARG DB_PATH=/trilium/code/db-data
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update
+
+RUN apt-get install -y apt-utils libpng16-16 libpng-dev pkg-config autoconf libtool build-essential nasm libx11-dev libxkbfile-dev git curl iptables-persistent
+RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
+RUN apt-get install -y nodejs
+
+RUN git clone https://github.com/VahidKay/trilium_customized.git /trilium
+
+WORKDIR /trilium/code
+
+RUN npm install --force
+RUN npm rebuild
+
+VOLUME $DB_PATH
+
+ENV TRILIUM_DATA_DIR=$DB_PATH
+
+EXPOSE 8080
+
+ENTRYPOINT [ "tail", "-f", "/dev/null" ]
+
+#ENTRYPOINT [ "npm", "run", "start-server-no-dir" ]
\ No newline at end of file
diff --git a/build/backup.sh b/build/backup.sh
new file mode 100644
index 00000000000..88fc6772e56
--- /dev/null
+++ b/build/backup.sh
@@ -0,0 +1,5 @@
+SOURCE="$(dirname "$(readlink -f "$0")")"
+
+file_name="backup_$(date '+%Y-%m-%d_%H').zip"
+zip -r $file_name "$SOURCE/../data/data"
+mv $file_name "$SOURCE/../data/backups/"
\ No newline at end of file
diff --git a/build/build.sh b/build/build.sh
new file mode 100755
index 00000000000..dd347884f7a
--- /dev/null
+++ b/build/build.sh
@@ -0,0 +1,10 @@
+CURRENT_DIR="$(pwd)"
+
+SOURCE="$(dirname "$(readlink -f "$0")")"
+
+cd "$SOURCE"
+
+docker build --no-cache -t note_server_bhead .
+#docker build -t note_server_bhead .
+
+cd "$CURRENT_DIR"
\ No newline at end of file
diff --git a/build/build_local.sh b/build/build_local.sh
new file mode 100644
index 00000000000..9a9717fc613
--- /dev/null
+++ b/build/build_local.sh
@@ -0,0 +1,7 @@
+apt-get update
+
+apt-get install -y apt-utils libpng16-16 libpng-dev pkg-config autoconf libtool build-essential nasm libx11-dev libxkbfile-dev git curl iptables-persistent
+curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
+apt-get install -y nodejs
+
+
diff --git a/build/run.sh b/build/run.sh
new file mode 100755
index 00000000000..9a923e7ab76
--- /dev/null
+++ b/build/run.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+SOURCE="$(dirname "$(readlink -f "$0")")"
+if [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
+ SOURCE="/$SOURCE"
+fi
+DATA_DIR="$SOURCE/../data"
+CODE_DIR="$SOURCE/../code"
+
+if [[ $# -eq 0 ]]; then
+ #sudo docker run -d -t --cap-drop NET_RAW --cap-drop NET_ADMIN -p 8080:8080 -v "$(pwd)/data":/trilium/db-data note_server_bhead
+ docker run -d -t --cap-drop NET_RAW --cap-drop NET_ADMIN --network intnet -p 8080:8080 --ip 172.21.0.21 -v "$DATA_DIR/data":/trilium/code/db-data note_server_bhead
+elif [[ $1 -eq "dev" ]]; then
+ docker run -d -t --cap-drop NET_RAW --cap-drop NET_ADMIN --network intnet -p 8080:8080 --ip 172.21.0.21 -v "$CODE_DIR/src/":/trilium/code/src -v "$DATA_DIR/data":/trilium/code/db-data -v "$CODE_DIR/libraries/":/trilium/code/libraries note_server_bhead
+fi
\ No newline at end of file
diff --git a/build/setup.sh b/build/setup.sh
new file mode 100644
index 00000000000..f0638b86bdb
--- /dev/null
+++ b/build/setup.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+
+# Logger Function
+log() {
+ local message="$1"
+ local type="$2"
+ local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
+ local color
+ local endcolor="\033[0m"
+
+ case "$type" in
+ "info") color="\033[38;5;79m" ;;
+ "success") color="\033[1;32m" ;;
+ "error") color="\033[1;31m" ;;
+ *) color="\033[1;34m" ;;
+ esac
+
+ echo -e "${color}${timestamp} - ${message}${endcolor}"
+}
+
+# Error handler function
+handle_error() {
+ local exit_code=$1
+ local error_message="$2"
+ log "Error: $error_message (Exit Code: $exit_code)" "error"
+ exit $exit_code
+}
+
+# Function to check for command availability
+command_exists() {
+ command -v "$1" &> /dev/null
+}
+
+check_os() {
+ if ! [ -f "/etc/debian_version" ]; then
+ echo "Error: This script is only supported on Debian-based systems."
+ exit 1
+ fi
+}
+
+# Function to Install the script pre-requisites
+install_pre_reqs() {
+ log "Installing pre-requisites" "info"
+
+ # Run 'apt-get update'
+ if ! apt-get update -y; then
+ handle_error "$?" "Failed to run 'apt-get update'"
+ fi
+
+ # Run 'apt-get install'
+ if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
+ handle_error "$?" "Failed to install packages"
+ fi
+
+ mkdir -p /usr/share/keyrings
+ rm -f /usr/share/keyrings/nodesource.gpg
+ rm -f /etc/apt/sources.list.d/nodesource.list
+
+ # Run 'curl' and 'gpg'
+ if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
+ handle_error "$?" "Failed to download and import the NodeSource signing key"
+ fi
+}
+
+# Function to configure the Repo
+configure_repo() {
+ local node_version=$1
+
+ arch=$(dpkg --print-architecture)
+ if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
+ handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
+ fi
+
+ echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
+
+ # N|solid Config
+ echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
+ echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
+ echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
+
+ # Nodejs Config
+ echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
+ echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
+ echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
+
+ # Run 'apt-get update'
+ if ! apt-get update -y; then
+ handle_error "$?" "Failed to run 'apt-get update'"
+ else
+ log "Repository configured successfully. To install Node.js, run: apt-get install nodejs -y" "success"
+ fi
+}
+
+# Define Node.js version
+NODE_VERSION="18.x"
+
+# Check OS
+check_os
+
+# Main execution
+install_pre_reqs || handle_error $? "Failed installing pre-requisites"
+configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
diff --git a/.dockerignore b/code/.dockerignore
similarity index 100%
rename from .dockerignore
rename to code/.dockerignore
diff --git a/.eslintignore b/code/.eslintignore
similarity index 100%
rename from .eslintignore
rename to code/.eslintignore
diff --git a/.eslintrc.js b/code/.eslintrc.js
similarity index 100%
rename from .eslintrc.js
rename to code/.eslintrc.js
diff --git a/.prettierrc.js b/code/.prettierrc.js
similarity index 100%
rename from .prettierrc.js
rename to code/.prettierrc.js
diff --git a/.vscode/extensions.json b/code/.vscode/extensions.json
similarity index 100%
rename from .vscode/extensions.json
rename to code/.vscode/extensions.json
diff --git a/.vscode/launch.json b/code/.vscode/launch.json
similarity index 100%
rename from .vscode/launch.json
rename to code/.vscode/launch.json
diff --git a/.vscode/settings.json b/code/.vscode/settings.json
similarity index 100%
rename from .vscode/settings.json
rename to code/.vscode/settings.json
diff --git a/CODE_OF_CONDUCT b/code/CODE_OF_CONDUCT
similarity index 100%
rename from CODE_OF_CONDUCT
rename to code/CODE_OF_CONDUCT
diff --git a/Dockerfile b/code/Dockerfile
similarity index 100%
rename from Dockerfile
rename to code/Dockerfile
diff --git a/LICENSE b/code/LICENSE
similarity index 100%
rename from LICENSE
rename to code/LICENSE
diff --git a/README-ZH_CN.md b/code/README-ZH_CN.md
similarity index 100%
rename from README-ZH_CN.md
rename to code/README-ZH_CN.md
diff --git a/README.ja.md b/code/README.ja.md
similarity index 100%
rename from README.ja.md
rename to code/README.ja.md
diff --git a/README.md b/code/README.md
similarity index 100%
rename from README.md
rename to code/README.md
diff --git a/README.ru.md b/code/README.ru.md
similarity index 100%
rename from README.ru.md
rename to code/README.ru.md
diff --git a/SECURITY.md b/code/SECURITY.md
similarity index 100%
rename from SECURITY.md
rename to code/SECURITY.md
diff --git a/bin/create-anonymization-script.js b/code/bin/create-anonymization-script.js
similarity index 67%
rename from bin/create-anonymization-script.js
rename to code/bin/create-anonymization-script.js
index 4c71d607137..8a8c9115b71 100644
--- a/bin/create-anonymization-script.js
+++ b/code/bin/create-anonymization-script.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
-const anonymizationService = require('../src/services/anonymization');
+const anonymizationService = require('../../git/trilium_customized/src/services/anonymization');
const fs = require('fs');
const path = require('path');
diff --git a/config-sample.ini b/code/config-sample.ini
similarity index 100%
rename from config-sample.ini
rename to code/config-sample.ini
diff --git a/db/TODO.txt b/code/db/TODO.txt
similarity index 100%
rename from db/TODO.txt
rename to code/db/TODO.txt
diff --git a/db/demo.zip b/code/db/demo.zip
similarity index 100%
rename from db/demo.zip
rename to code/db/demo.zip
diff --git a/db/image-deleted.png b/code/db/image-deleted.png
similarity index 100%
rename from db/image-deleted.png
rename to code/db/image-deleted.png
diff --git a/db/migrations/0184__NOOP.js b/code/db/migrations/0184__NOOP.js
similarity index 100%
rename from db/migrations/0184__NOOP.js
rename to code/db/migrations/0184__NOOP.js
diff --git a/db/migrations/0185__migrate_black_theme_to_dark.sql b/code/db/migrations/0185__migrate_black_theme_to_dark.sql
similarity index 100%
rename from db/migrations/0185__migrate_black_theme_to_dark.sql
rename to code/db/migrations/0185__migrate_black_theme_to_dark.sql
diff --git a/db/migrations/0186__drop_branches_options_utcDateCreated.sql b/code/db/migrations/0186__drop_branches_options_utcDateCreated.sql
similarity index 100%
rename from db/migrations/0186__drop_branches_options_utcDateCreated.sql
rename to code/db/migrations/0186__drop_branches_options_utcDateCreated.sql
diff --git a/db/migrations/0187__add_changeId_to_entity_changes.sql b/code/db/migrations/0187__add_changeId_to_entity_changes.sql
similarity index 100%
rename from db/migrations/0187__add_changeId_to_entity_changes.sql
rename to code/db/migrations/0187__add_changeId_to_entity_changes.sql
diff --git a/db/migrations/0188__set_hidden_branchId.sql b/code/db/migrations/0188__set_hidden_branchId.sql
similarity index 100%
rename from db/migrations/0188__set_hidden_branchId.sql
rename to code/db/migrations/0188__set_hidden_branchId.sql
diff --git a/db/migrations/0189__delete_username_option.sql b/code/db/migrations/0189__delete_username_option.sql
similarity index 100%
rename from db/migrations/0189__delete_username_option.sql
rename to code/db/migrations/0189__delete_username_option.sql
diff --git a/db/migrations/0190__change_to_etapi_tokens.sql b/code/db/migrations/0190__change_to_etapi_tokens.sql
similarity index 100%
rename from db/migrations/0190__change_to_etapi_tokens.sql
rename to code/db/migrations/0190__change_to_etapi_tokens.sql
diff --git a/db/migrations/0191__hash_tokens.js b/code/db/migrations/0191__hash_tokens.js
similarity index 100%
rename from db/migrations/0191__hash_tokens.js
rename to code/db/migrations/0191__hash_tokens.js
diff --git a/db/migrations/0192__add_memberId_to_entity_changes.sql b/code/db/migrations/0192__add_memberId_to_entity_changes.sql
similarity index 100%
rename from db/migrations/0192__add_memberId_to_entity_changes.sql
rename to code/db/migrations/0192__add_memberId_to_entity_changes.sql
diff --git a/db/migrations/0193__add_index_to_changeId.sql b/code/db/migrations/0193__add_index_to_changeId.sql
similarity index 100%
rename from db/migrations/0193__add_index_to_changeId.sql
rename to code/db/migrations/0193__add_index_to_changeId.sql
diff --git a/db/migrations/0194__add_excludeFromNoteMap_to_journal.js b/code/db/migrations/0194__add_excludeFromNoteMap_to_journal.js
similarity index 100%
rename from db/migrations/0194__add_excludeFromNoteMap_to_journal.js
rename to code/db/migrations/0194__add_excludeFromNoteMap_to_journal.js
diff --git a/db/migrations/0195__remove_recent_notes_from_entity_changes.sql b/code/db/migrations/0195__remove_recent_notes_from_entity_changes.sql
similarity index 100%
rename from db/migrations/0195__remove_recent_notes_from_entity_changes.sql
rename to code/db/migrations/0195__remove_recent_notes_from_entity_changes.sql
diff --git a/db/migrations/0196__rename_bulk_actions.sql b/code/db/migrations/0196__rename_bulk_actions.sql
similarity index 100%
rename from db/migrations/0196__rename_bulk_actions.sql
rename to code/db/migrations/0196__rename_bulk_actions.sql
diff --git a/db/migrations/0197__NOOP.js b/code/db/migrations/0197__NOOP.js
similarity index 100%
rename from db/migrations/0197__NOOP.js
rename to code/db/migrations/0197__NOOP.js
diff --git a/db/migrations/0198__rename_branchIds.sql b/code/db/migrations/0198__rename_branchIds.sql
similarity index 100%
rename from db/migrations/0198__rename_branchIds.sql
rename to code/db/migrations/0198__rename_branchIds.sql
diff --git a/db/migrations/0199__rename_ids.sql b/code/db/migrations/0199__rename_ids.sql
similarity index 100%
rename from db/migrations/0199__rename_ids.sql
rename to code/db/migrations/0199__rename_ids.sql
diff --git a/db/migrations/0200__create_hidden_subtree.js b/code/db/migrations/0200__create_hidden_subtree.js
similarity index 100%
rename from db/migrations/0200__create_hidden_subtree.js
rename to code/db/migrations/0200__create_hidden_subtree.js
diff --git a/db/migrations/0201__move_share_under_hidden.sql b/code/db/migrations/0201__move_share_under_hidden.sql
similarity index 100%
rename from db/migrations/0201__move_share_under_hidden.sql
rename to code/db/migrations/0201__move_share_under_hidden.sql
diff --git a/db/migrations/0202__move_global_note_map_under_hidden.sql b/code/db/migrations/0202__move_global_note_map_under_hidden.sql
similarity index 100%
rename from db/migrations/0202__move_global_note_map_under_hidden.sql
rename to code/db/migrations/0202__move_global_note_map_under_hidden.sql
diff --git a/db/migrations/0203__delete_singles_special_note.sql b/code/db/migrations/0203__delete_singles_special_note.sql
similarity index 100%
rename from db/migrations/0203__delete_singles_special_note.sql
rename to code/db/migrations/0203__delete_singles_special_note.sql
diff --git a/db/migrations/0204__migrate_bookmarks_to_clones.js b/code/db/migrations/0204__migrate_bookmarks_to_clones.js
similarity index 100%
rename from db/migrations/0204__migrate_bookmarks_to_clones.js
rename to code/db/migrations/0204__migrate_bookmarks_to_clones.js
diff --git a/db/migrations/0205__rename_note_types.sql b/code/db/migrations/0205__rename_note_types.sql
similarity index 100%
rename from db/migrations/0205__rename_note_types.sql
rename to code/db/migrations/0205__rename_note_types.sql
diff --git a/db/migrations/0206__delete_search_and_sql_console_history.js b/code/db/migrations/0206__delete_search_and_sql_console_history.js
similarity index 100%
rename from db/migrations/0206__delete_search_and_sql_console_history.js
rename to code/db/migrations/0206__delete_search_and_sql_console_history.js
diff --git a/db/migrations/0207__rename_search_and_sql_console.sql b/code/db/migrations/0207__rename_search_and_sql_console.sql
similarity index 100%
rename from db/migrations/0207__rename_search_and_sql_console.sql
rename to code/db/migrations/0207__rename_search_and_sql_console.sql
diff --git a/db/migrations/0208__remove_archived_from_hidden.js b/code/db/migrations/0208__remove_archived_from_hidden.js
similarity index 100%
rename from db/migrations/0208__remove_archived_from_hidden.js
rename to code/db/migrations/0208__remove_archived_from_hidden.js
diff --git a/db/migrations/0209__rename_hoisted_labels.sql b/code/db/migrations/0209__rename_hoisted_labels.sql
similarity index 100%
rename from db/migrations/0209__rename_hoisted_labels.sql
rename to code/db/migrations/0209__rename_hoisted_labels.sql
diff --git a/db/migrations/0210__consistency_checks.js b/code/db/migrations/0210__consistency_checks.js
similarity index 100%
rename from db/migrations/0210__consistency_checks.js
rename to code/db/migrations/0210__consistency_checks.js
diff --git a/db/migrations/0211__rename_branchIds.sql b/code/db/migrations/0211__rename_branchIds.sql
similarity index 100%
rename from db/migrations/0211__rename_branchIds.sql
rename to code/db/migrations/0211__rename_branchIds.sql
diff --git a/db/migrations/0212__delete_all_attributes_of_named_notes.js b/code/db/migrations/0212__delete_all_attributes_of_named_notes.js
similarity index 100%
rename from db/migrations/0212__delete_all_attributes_of_named_notes.js
rename to code/db/migrations/0212__delete_all_attributes_of_named_notes.js
diff --git a/db/migrations/0213__migrate_scripts.js b/code/db/migrations/0213__migrate_scripts.js
similarity index 100%
rename from db/migrations/0213__migrate_scripts.js
rename to code/db/migrations/0213__migrate_scripts.js
diff --git a/db/migrations/0214__fix_root_children_ordering.sql b/code/db/migrations/0214__fix_root_children_ordering.sql
similarity index 100%
rename from db/migrations/0214__fix_root_children_ordering.sql
rename to code/db/migrations/0214__fix_root_children_ordering.sql
diff --git a/db/migrations/0215__content_structure.sql b/code/db/migrations/0215__content_structure.sql
similarity index 100%
rename from db/migrations/0215__content_structure.sql
rename to code/db/migrations/0215__content_structure.sql
diff --git a/db/migrations/0216__move_content_into_blobs.js b/code/db/migrations/0216__move_content_into_blobs.js
similarity index 100%
rename from db/migrations/0216__move_content_into_blobs.js
rename to code/db/migrations/0216__move_content_into_blobs.js
diff --git a/db/migrations/0217__drop_content_tables.sql b/code/db/migrations/0217__drop_content_tables.sql
similarity index 100%
rename from db/migrations/0217__drop_content_tables.sql
rename to code/db/migrations/0217__drop_content_tables.sql
diff --git a/db/migrations/0218__rename_note_revision_to_revision.sql b/code/db/migrations/0218__rename_note_revision_to_revision.sql
similarity index 100%
rename from db/migrations/0218__rename_note_revision_to_revision.sql
rename to code/db/migrations/0218__rename_note_revision_to_revision.sql
diff --git a/db/migrations/0219__attachments.sql b/code/db/migrations/0219__attachments.sql
similarity index 100%
rename from db/migrations/0219__attachments.sql
rename to code/db/migrations/0219__attachments.sql
diff --git a/db/migrations/0220__migrate_images_to_attachments.js b/code/db/migrations/0220__migrate_images_to_attachments.js
similarity index 100%
rename from db/migrations/0220__migrate_images_to_attachments.js
rename to code/db/migrations/0220__migrate_images_to_attachments.js
diff --git a/db/migrations/0221__remove_hideIncludedImages_main_option.sql b/code/db/migrations/0221__remove_hideIncludedImages_main_option.sql
similarity index 100%
rename from db/migrations/0221__remove_hideIncludedImages_main_option.sql
rename to code/db/migrations/0221__remove_hideIncludedImages_main_option.sql
diff --git a/db/migrations/0222__rename_openTabs_to_openNoteContexts.sql b/code/db/migrations/0222__rename_openTabs_to_openNoteContexts.sql
similarity index 100%
rename from db/migrations/0222__rename_openTabs_to_openNoteContexts.sql
rename to code/db/migrations/0222__rename_openTabs_to_openNoteContexts.sql
diff --git a/db/migrations/0223__NOOP.sql b/code/db/migrations/0223__NOOP.sql
similarity index 100%
rename from db/migrations/0223__NOOP.sql
rename to code/db/migrations/0223__NOOP.sql
diff --git a/db/migrations/0224__fix_blobIds.sql b/code/db/migrations/0224__fix_blobIds.sql
similarity index 100%
rename from db/migrations/0224__fix_blobIds.sql
rename to code/db/migrations/0224__fix_blobIds.sql
diff --git a/db/migrations/0225__create_blobId_indices.sql b/code/db/migrations/0225__create_blobId_indices.sql
similarity index 100%
rename from db/migrations/0225__create_blobId_indices.sql
rename to code/db/migrations/0225__create_blobId_indices.sql
diff --git a/db/schema.sql b/code/db/schema.sql
similarity index 100%
rename from db/schema.sql
rename to code/db/schema.sql
diff --git a/docker-compose.yml b/code/docker-compose.yml
similarity index 100%
rename from docker-compose.yml
rename to code/docker-compose.yml
diff --git a/docker_healthcheck.js b/code/docker_healthcheck.js
similarity index 100%
rename from docker_healthcheck.js
rename to code/docker_healthcheck.js
diff --git a/docs/backend_api/AbstractBeccaEntity.html b/code/docs/backend_api/AbstractBeccaEntity.html
similarity index 100%
rename from docs/backend_api/AbstractBeccaEntity.html
rename to code/docs/backend_api/AbstractBeccaEntity.html
diff --git a/docs/backend_api/BAttribute.html b/code/docs/backend_api/BAttribute.html
similarity index 100%
rename from docs/backend_api/BAttribute.html
rename to code/docs/backend_api/BAttribute.html
diff --git a/docs/backend_api/BBranch.html b/code/docs/backend_api/BBranch.html
similarity index 100%
rename from docs/backend_api/BBranch.html
rename to code/docs/backend_api/BBranch.html
diff --git a/docs/backend_api/BEtapiToken.html b/code/docs/backend_api/BEtapiToken.html
similarity index 100%
rename from docs/backend_api/BEtapiToken.html
rename to code/docs/backend_api/BEtapiToken.html
diff --git a/docs/backend_api/BNote.html b/code/docs/backend_api/BNote.html
similarity index 100%
rename from docs/backend_api/BNote.html
rename to code/docs/backend_api/BNote.html
diff --git a/docs/backend_api/BOption.html b/code/docs/backend_api/BOption.html
similarity index 100%
rename from docs/backend_api/BOption.html
rename to code/docs/backend_api/BOption.html
diff --git a/docs/backend_api/BRecentNote.html b/code/docs/backend_api/BRecentNote.html
similarity index 100%
rename from docs/backend_api/BRecentNote.html
rename to code/docs/backend_api/BRecentNote.html
diff --git a/docs/backend_api/BackendScriptApi.html b/code/docs/backend_api/BackendScriptApi.html
similarity index 100%
rename from docs/backend_api/BackendScriptApi.html
rename to code/docs/backend_api/BackendScriptApi.html
diff --git a/docs/backend_api/becca_entities_abstract_becca_entity.js.html b/code/docs/backend_api/becca_entities_abstract_becca_entity.js.html
similarity index 100%
rename from docs/backend_api/becca_entities_abstract_becca_entity.js.html
rename to code/docs/backend_api/becca_entities_abstract_becca_entity.js.html
diff --git a/docs/backend_api/becca_entities_battribute.js.html b/code/docs/backend_api/becca_entities_battribute.js.html
similarity index 99%
rename from docs/backend_api/becca_entities_battribute.js.html
rename to code/docs/backend_api/becca_entities_battribute.js.html
index ace7179e54c..992b5362635 100644
--- a/docs/backend_api/becca_entities_battribute.js.html
+++ b/code/docs/backend_api/becca_entities_battribute.js.html
@@ -115,7 +115,7 @@
Source: becca/entities/battribute.js
}
validate() {
- if (!["label", "relation"].includes(this.type)) {
+ if (!["label", "relation", "taskprop"].includes(this.type)) {
throw new Error(`Invalid attribute type '${this.type}' in attribute '${this.attributeId}' of note '${this.noteId}'`);
}
diff --git a/docs/backend_api/becca_entities_bbranch.js.html b/code/docs/backend_api/becca_entities_bbranch.js.html
similarity index 100%
rename from docs/backend_api/becca_entities_bbranch.js.html
rename to code/docs/backend_api/becca_entities_bbranch.js.html
diff --git a/docs/backend_api/becca_entities_betapi_token.js.html b/code/docs/backend_api/becca_entities_betapi_token.js.html
similarity index 100%
rename from docs/backend_api/becca_entities_betapi_token.js.html
rename to code/docs/backend_api/becca_entities_betapi_token.js.html
diff --git a/docs/backend_api/becca_entities_bnote.js.html b/code/docs/backend_api/becca_entities_bnote.js.html
similarity index 100%
rename from docs/backend_api/becca_entities_bnote.js.html
rename to code/docs/backend_api/becca_entities_bnote.js.html
diff --git a/docs/backend_api/becca_entities_boption.js.html b/code/docs/backend_api/becca_entities_boption.js.html
similarity index 100%
rename from docs/backend_api/becca_entities_boption.js.html
rename to code/docs/backend_api/becca_entities_boption.js.html
diff --git a/docs/backend_api/becca_entities_brecent_note.js.html b/code/docs/backend_api/becca_entities_brecent_note.js.html
similarity index 100%
rename from docs/backend_api/becca_entities_brecent_note.js.html
rename to code/docs/backend_api/becca_entities_brecent_note.js.html
diff --git a/docs/backend_api/fonts/OpenSans-Bold-webfont.eot b/code/docs/backend_api/fonts/OpenSans-Bold-webfont.eot
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Bold-webfont.eot
rename to code/docs/backend_api/fonts/OpenSans-Bold-webfont.eot
diff --git a/docs/backend_api/fonts/OpenSans-Bold-webfont.svg b/code/docs/backend_api/fonts/OpenSans-Bold-webfont.svg
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Bold-webfont.svg
rename to code/docs/backend_api/fonts/OpenSans-Bold-webfont.svg
diff --git a/docs/backend_api/fonts/OpenSans-Bold-webfont.woff b/code/docs/backend_api/fonts/OpenSans-Bold-webfont.woff
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Bold-webfont.woff
rename to code/docs/backend_api/fonts/OpenSans-Bold-webfont.woff
diff --git a/docs/backend_api/fonts/OpenSans-BoldItalic-webfont.eot b/code/docs/backend_api/fonts/OpenSans-BoldItalic-webfont.eot
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-BoldItalic-webfont.eot
rename to code/docs/backend_api/fonts/OpenSans-BoldItalic-webfont.eot
diff --git a/docs/backend_api/fonts/OpenSans-BoldItalic-webfont.svg b/code/docs/backend_api/fonts/OpenSans-BoldItalic-webfont.svg
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-BoldItalic-webfont.svg
rename to code/docs/backend_api/fonts/OpenSans-BoldItalic-webfont.svg
diff --git a/docs/backend_api/fonts/OpenSans-BoldItalic-webfont.woff b/code/docs/backend_api/fonts/OpenSans-BoldItalic-webfont.woff
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-BoldItalic-webfont.woff
rename to code/docs/backend_api/fonts/OpenSans-BoldItalic-webfont.woff
diff --git a/docs/backend_api/fonts/OpenSans-Italic-webfont.eot b/code/docs/backend_api/fonts/OpenSans-Italic-webfont.eot
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Italic-webfont.eot
rename to code/docs/backend_api/fonts/OpenSans-Italic-webfont.eot
diff --git a/docs/backend_api/fonts/OpenSans-Italic-webfont.svg b/code/docs/backend_api/fonts/OpenSans-Italic-webfont.svg
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Italic-webfont.svg
rename to code/docs/backend_api/fonts/OpenSans-Italic-webfont.svg
diff --git a/docs/backend_api/fonts/OpenSans-Italic-webfont.woff b/code/docs/backend_api/fonts/OpenSans-Italic-webfont.woff
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Italic-webfont.woff
rename to code/docs/backend_api/fonts/OpenSans-Italic-webfont.woff
diff --git a/docs/backend_api/fonts/OpenSans-Light-webfont.eot b/code/docs/backend_api/fonts/OpenSans-Light-webfont.eot
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Light-webfont.eot
rename to code/docs/backend_api/fonts/OpenSans-Light-webfont.eot
diff --git a/docs/backend_api/fonts/OpenSans-Light-webfont.svg b/code/docs/backend_api/fonts/OpenSans-Light-webfont.svg
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Light-webfont.svg
rename to code/docs/backend_api/fonts/OpenSans-Light-webfont.svg
diff --git a/docs/backend_api/fonts/OpenSans-Light-webfont.woff b/code/docs/backend_api/fonts/OpenSans-Light-webfont.woff
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Light-webfont.woff
rename to code/docs/backend_api/fonts/OpenSans-Light-webfont.woff
diff --git a/docs/backend_api/fonts/OpenSans-LightItalic-webfont.eot b/code/docs/backend_api/fonts/OpenSans-LightItalic-webfont.eot
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-LightItalic-webfont.eot
rename to code/docs/backend_api/fonts/OpenSans-LightItalic-webfont.eot
diff --git a/docs/backend_api/fonts/OpenSans-LightItalic-webfont.svg b/code/docs/backend_api/fonts/OpenSans-LightItalic-webfont.svg
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-LightItalic-webfont.svg
rename to code/docs/backend_api/fonts/OpenSans-LightItalic-webfont.svg
diff --git a/docs/backend_api/fonts/OpenSans-LightItalic-webfont.woff b/code/docs/backend_api/fonts/OpenSans-LightItalic-webfont.woff
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-LightItalic-webfont.woff
rename to code/docs/backend_api/fonts/OpenSans-LightItalic-webfont.woff
diff --git a/docs/backend_api/fonts/OpenSans-Regular-webfont.eot b/code/docs/backend_api/fonts/OpenSans-Regular-webfont.eot
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Regular-webfont.eot
rename to code/docs/backend_api/fonts/OpenSans-Regular-webfont.eot
diff --git a/docs/backend_api/fonts/OpenSans-Regular-webfont.svg b/code/docs/backend_api/fonts/OpenSans-Regular-webfont.svg
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Regular-webfont.svg
rename to code/docs/backend_api/fonts/OpenSans-Regular-webfont.svg
diff --git a/docs/backend_api/fonts/OpenSans-Regular-webfont.woff b/code/docs/backend_api/fonts/OpenSans-Regular-webfont.woff
similarity index 100%
rename from docs/backend_api/fonts/OpenSans-Regular-webfont.woff
rename to code/docs/backend_api/fonts/OpenSans-Regular-webfont.woff
diff --git a/docs/backend_api/index.html b/code/docs/backend_api/index.html
similarity index 100%
rename from docs/backend_api/index.html
rename to code/docs/backend_api/index.html
diff --git a/docs/backend_api/module-sql.html b/code/docs/backend_api/module-sql.html
similarity index 100%
rename from docs/backend_api/module-sql.html
rename to code/docs/backend_api/module-sql.html
diff --git a/docs/backend_api/scripts/linenumber.js b/code/docs/backend_api/scripts/linenumber.js
similarity index 100%
rename from docs/backend_api/scripts/linenumber.js
rename to code/docs/backend_api/scripts/linenumber.js
diff --git a/docs/backend_api/scripts/prettify/Apache-License-2.0.txt b/code/docs/backend_api/scripts/prettify/Apache-License-2.0.txt
similarity index 100%
rename from docs/backend_api/scripts/prettify/Apache-License-2.0.txt
rename to code/docs/backend_api/scripts/prettify/Apache-License-2.0.txt
diff --git a/docs/backend_api/scripts/prettify/lang-css.js b/code/docs/backend_api/scripts/prettify/lang-css.js
similarity index 100%
rename from docs/backend_api/scripts/prettify/lang-css.js
rename to code/docs/backend_api/scripts/prettify/lang-css.js
diff --git a/docs/backend_api/scripts/prettify/prettify.js b/code/docs/backend_api/scripts/prettify/prettify.js
similarity index 100%
rename from docs/backend_api/scripts/prettify/prettify.js
rename to code/docs/backend_api/scripts/prettify/prettify.js
diff --git a/docs/backend_api/services_backend_script_api.js.html b/code/docs/backend_api/services_backend_script_api.js.html
similarity index 100%
rename from docs/backend_api/services_backend_script_api.js.html
rename to code/docs/backend_api/services_backend_script_api.js.html
diff --git a/docs/backend_api/services_sql.js.html b/code/docs/backend_api/services_sql.js.html
similarity index 100%
rename from docs/backend_api/services_sql.js.html
rename to code/docs/backend_api/services_sql.js.html
diff --git a/docs/backend_api/styles/jsdoc-default.css b/code/docs/backend_api/styles/jsdoc-default.css
similarity index 100%
rename from docs/backend_api/styles/jsdoc-default.css
rename to code/docs/backend_api/styles/jsdoc-default.css
diff --git a/docs/backend_api/styles/prettify-jsdoc.css b/code/docs/backend_api/styles/prettify-jsdoc.css
similarity index 100%
rename from docs/backend_api/styles/prettify-jsdoc.css
rename to code/docs/backend_api/styles/prettify-jsdoc.css
diff --git a/docs/backend_api/styles/prettify-tomorrow.css b/code/docs/backend_api/styles/prettify-tomorrow.css
similarity index 100%
rename from docs/backend_api/styles/prettify-tomorrow.css
rename to code/docs/backend_api/styles/prettify-tomorrow.css
diff --git a/docs/frontend_api/FAttribute.html b/code/docs/frontend_api/FAttribute.html
similarity index 100%
rename from docs/frontend_api/FAttribute.html
rename to code/docs/frontend_api/FAttribute.html
diff --git a/docs/frontend_api/FBranch.html b/code/docs/frontend_api/FBranch.html
similarity index 100%
rename from docs/frontend_api/FBranch.html
rename to code/docs/frontend_api/FBranch.html
diff --git a/docs/frontend_api/FNote.html b/code/docs/frontend_api/FNote.html
similarity index 100%
rename from docs/frontend_api/FNote.html
rename to code/docs/frontend_api/FNote.html
diff --git a/docs/frontend_api/FrontendScriptApi.html b/code/docs/frontend_api/FrontendScriptApi.html
similarity index 100%
rename from docs/frontend_api/FrontendScriptApi.html
rename to code/docs/frontend_api/FrontendScriptApi.html
diff --git a/docs/frontend_api/entities_fattribute.js.html b/code/docs/frontend_api/entities_fattribute.js.html
similarity index 100%
rename from docs/frontend_api/entities_fattribute.js.html
rename to code/docs/frontend_api/entities_fattribute.js.html
diff --git a/docs/frontend_api/entities_fbranch.js.html b/code/docs/frontend_api/entities_fbranch.js.html
similarity index 100%
rename from docs/frontend_api/entities_fbranch.js.html
rename to code/docs/frontend_api/entities_fbranch.js.html
diff --git a/docs/frontend_api/entities_fnote.js.html b/code/docs/frontend_api/entities_fnote.js.html
similarity index 100%
rename from docs/frontend_api/entities_fnote.js.html
rename to code/docs/frontend_api/entities_fnote.js.html
diff --git a/docs/frontend_api/fonts/OpenSans-Bold-webfont.eot b/code/docs/frontend_api/fonts/OpenSans-Bold-webfont.eot
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Bold-webfont.eot
rename to code/docs/frontend_api/fonts/OpenSans-Bold-webfont.eot
diff --git a/docs/frontend_api/fonts/OpenSans-Bold-webfont.svg b/code/docs/frontend_api/fonts/OpenSans-Bold-webfont.svg
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Bold-webfont.svg
rename to code/docs/frontend_api/fonts/OpenSans-Bold-webfont.svg
diff --git a/docs/frontend_api/fonts/OpenSans-Bold-webfont.woff b/code/docs/frontend_api/fonts/OpenSans-Bold-webfont.woff
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Bold-webfont.woff
rename to code/docs/frontend_api/fonts/OpenSans-Bold-webfont.woff
diff --git a/docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.eot b/code/docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.eot
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.eot
rename to code/docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.eot
diff --git a/docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.svg b/code/docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.svg
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.svg
rename to code/docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.svg
diff --git a/docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.woff b/code/docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.woff
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.woff
rename to code/docs/frontend_api/fonts/OpenSans-BoldItalic-webfont.woff
diff --git a/docs/frontend_api/fonts/OpenSans-Italic-webfont.eot b/code/docs/frontend_api/fonts/OpenSans-Italic-webfont.eot
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Italic-webfont.eot
rename to code/docs/frontend_api/fonts/OpenSans-Italic-webfont.eot
diff --git a/docs/frontend_api/fonts/OpenSans-Italic-webfont.svg b/code/docs/frontend_api/fonts/OpenSans-Italic-webfont.svg
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Italic-webfont.svg
rename to code/docs/frontend_api/fonts/OpenSans-Italic-webfont.svg
diff --git a/docs/frontend_api/fonts/OpenSans-Italic-webfont.woff b/code/docs/frontend_api/fonts/OpenSans-Italic-webfont.woff
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Italic-webfont.woff
rename to code/docs/frontend_api/fonts/OpenSans-Italic-webfont.woff
diff --git a/docs/frontend_api/fonts/OpenSans-Light-webfont.eot b/code/docs/frontend_api/fonts/OpenSans-Light-webfont.eot
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Light-webfont.eot
rename to code/docs/frontend_api/fonts/OpenSans-Light-webfont.eot
diff --git a/docs/frontend_api/fonts/OpenSans-Light-webfont.svg b/code/docs/frontend_api/fonts/OpenSans-Light-webfont.svg
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Light-webfont.svg
rename to code/docs/frontend_api/fonts/OpenSans-Light-webfont.svg
diff --git a/docs/frontend_api/fonts/OpenSans-Light-webfont.woff b/code/docs/frontend_api/fonts/OpenSans-Light-webfont.woff
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Light-webfont.woff
rename to code/docs/frontend_api/fonts/OpenSans-Light-webfont.woff
diff --git a/docs/frontend_api/fonts/OpenSans-LightItalic-webfont.eot b/code/docs/frontend_api/fonts/OpenSans-LightItalic-webfont.eot
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-LightItalic-webfont.eot
rename to code/docs/frontend_api/fonts/OpenSans-LightItalic-webfont.eot
diff --git a/docs/frontend_api/fonts/OpenSans-LightItalic-webfont.svg b/code/docs/frontend_api/fonts/OpenSans-LightItalic-webfont.svg
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-LightItalic-webfont.svg
rename to code/docs/frontend_api/fonts/OpenSans-LightItalic-webfont.svg
diff --git a/docs/frontend_api/fonts/OpenSans-LightItalic-webfont.woff b/code/docs/frontend_api/fonts/OpenSans-LightItalic-webfont.woff
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-LightItalic-webfont.woff
rename to code/docs/frontend_api/fonts/OpenSans-LightItalic-webfont.woff
diff --git a/docs/frontend_api/fonts/OpenSans-Regular-webfont.eot b/code/docs/frontend_api/fonts/OpenSans-Regular-webfont.eot
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Regular-webfont.eot
rename to code/docs/frontend_api/fonts/OpenSans-Regular-webfont.eot
diff --git a/docs/frontend_api/fonts/OpenSans-Regular-webfont.svg b/code/docs/frontend_api/fonts/OpenSans-Regular-webfont.svg
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Regular-webfont.svg
rename to code/docs/frontend_api/fonts/OpenSans-Regular-webfont.svg
diff --git a/docs/frontend_api/fonts/OpenSans-Regular-webfont.woff b/code/docs/frontend_api/fonts/OpenSans-Regular-webfont.woff
similarity index 100%
rename from docs/frontend_api/fonts/OpenSans-Regular-webfont.woff
rename to code/docs/frontend_api/fonts/OpenSans-Regular-webfont.woff
diff --git a/docs/frontend_api/index.html b/code/docs/frontend_api/index.html
similarity index 100%
rename from docs/frontend_api/index.html
rename to code/docs/frontend_api/index.html
diff --git a/docs/frontend_api/scripts/linenumber.js b/code/docs/frontend_api/scripts/linenumber.js
similarity index 100%
rename from docs/frontend_api/scripts/linenumber.js
rename to code/docs/frontend_api/scripts/linenumber.js
diff --git a/docs/frontend_api/scripts/prettify/Apache-License-2.0.txt b/code/docs/frontend_api/scripts/prettify/Apache-License-2.0.txt
similarity index 100%
rename from docs/frontend_api/scripts/prettify/Apache-License-2.0.txt
rename to code/docs/frontend_api/scripts/prettify/Apache-License-2.0.txt
diff --git a/docs/frontend_api/scripts/prettify/lang-css.js b/code/docs/frontend_api/scripts/prettify/lang-css.js
similarity index 100%
rename from docs/frontend_api/scripts/prettify/lang-css.js
rename to code/docs/frontend_api/scripts/prettify/lang-css.js
diff --git a/docs/frontend_api/scripts/prettify/prettify.js b/code/docs/frontend_api/scripts/prettify/prettify.js
similarity index 100%
rename from docs/frontend_api/scripts/prettify/prettify.js
rename to code/docs/frontend_api/scripts/prettify/prettify.js
diff --git a/docs/frontend_api/services_frontend_script_api.js.html b/code/docs/frontend_api/services_frontend_script_api.js.html
similarity index 100%
rename from docs/frontend_api/services_frontend_script_api.js.html
rename to code/docs/frontend_api/services_frontend_script_api.js.html
diff --git a/docs/frontend_api/styles/jsdoc-default.css b/code/docs/frontend_api/styles/jsdoc-default.css
similarity index 100%
rename from docs/frontend_api/styles/jsdoc-default.css
rename to code/docs/frontend_api/styles/jsdoc-default.css
diff --git a/docs/frontend_api/styles/prettify-jsdoc.css b/code/docs/frontend_api/styles/prettify-jsdoc.css
similarity index 100%
rename from docs/frontend_api/styles/prettify-jsdoc.css
rename to code/docs/frontend_api/styles/prettify-jsdoc.css
diff --git a/docs/frontend_api/styles/prettify-tomorrow.css b/code/docs/frontend_api/styles/prettify-tomorrow.css
similarity index 100%
rename from docs/frontend_api/styles/prettify-tomorrow.css
rename to code/docs/frontend_api/styles/prettify-tomorrow.css
diff --git a/dump-db/README.md b/code/dump-db/README.md
similarity index 100%
rename from dump-db/README.md
rename to code/dump-db/README.md
diff --git a/dump-db/dump-db.js b/code/dump-db/dump-db.js
similarity index 100%
rename from dump-db/dump-db.js
rename to code/dump-db/dump-db.js
diff --git a/dump-db/inc/data_key.js b/code/dump-db/inc/data_key.js
similarity index 100%
rename from dump-db/inc/data_key.js
rename to code/dump-db/inc/data_key.js
diff --git a/dump-db/inc/decrypt.js b/code/dump-db/inc/decrypt.js
similarity index 100%
rename from dump-db/inc/decrypt.js
rename to code/dump-db/inc/decrypt.js
diff --git a/dump-db/inc/dump.js b/code/dump-db/inc/dump.js
similarity index 100%
rename from dump-db/inc/dump.js
rename to code/dump-db/inc/dump.js
diff --git a/dump-db/inc/extension.js b/code/dump-db/inc/extension.js
similarity index 100%
rename from dump-db/inc/extension.js
rename to code/dump-db/inc/extension.js
diff --git a/dump-db/inc/sql.js b/code/dump-db/inc/sql.js
similarity index 100%
rename from dump-db/inc/sql.js
rename to code/dump-db/inc/sql.js
diff --git a/dump-db/package-lock.json b/code/dump-db/package-lock.json
similarity index 100%
rename from dump-db/package-lock.json
rename to code/dump-db/package-lock.json
diff --git a/dump-db/package.json b/code/dump-db/package.json
similarity index 100%
rename from dump-db/package.json
rename to code/dump-db/package.json
diff --git a/electron.js b/code/electron.js
similarity index 100%
rename from electron.js
rename to code/electron.js
diff --git a/images/app-icons/ios/apple-touch-icon.png b/code/images/app-icons/ios/apple-touch-icon.png
similarity index 100%
rename from images/app-icons/ios/apple-touch-icon.png
rename to code/images/app-icons/ios/apple-touch-icon.png
diff --git a/images/app-icons/mac/icon.icns b/code/images/app-icons/mac/icon.icns
similarity index 100%
rename from images/app-icons/mac/icon.icns
rename to code/images/app-icons/mac/icon.icns
diff --git a/images/app-icons/png/128x128.png b/code/images/app-icons/png/128x128.png
similarity index 100%
rename from images/app-icons/png/128x128.png
rename to code/images/app-icons/png/128x128.png
diff --git a/images/app-icons/png/16x16-bw.png b/code/images/app-icons/png/16x16-bw.png
similarity index 100%
rename from images/app-icons/png/16x16-bw.png
rename to code/images/app-icons/png/16x16-bw.png
diff --git a/images/app-icons/png/16x16.png b/code/images/app-icons/png/16x16.png
similarity index 100%
rename from images/app-icons/png/16x16.png
rename to code/images/app-icons/png/16x16.png
diff --git a/images/app-icons/png/24x24.png b/code/images/app-icons/png/24x24.png
similarity index 100%
rename from images/app-icons/png/24x24.png
rename to code/images/app-icons/png/24x24.png
diff --git a/images/app-icons/png/256x256-dev.png b/code/images/app-icons/png/256x256-dev.png
similarity index 100%
rename from images/app-icons/png/256x256-dev.png
rename to code/images/app-icons/png/256x256-dev.png
diff --git a/images/app-icons/png/256x256.png b/code/images/app-icons/png/256x256.png
similarity index 100%
rename from images/app-icons/png/256x256.png
rename to code/images/app-icons/png/256x256.png
diff --git a/images/app-icons/png/32x32.png b/code/images/app-icons/png/32x32.png
similarity index 100%
rename from images/app-icons/png/32x32.png
rename to code/images/app-icons/png/32x32.png
diff --git a/images/app-icons/png/48x48.png b/code/images/app-icons/png/48x48.png
similarity index 100%
rename from images/app-icons/png/48x48.png
rename to code/images/app-icons/png/48x48.png
diff --git a/images/app-icons/png/512x512.png b/code/images/app-icons/png/512x512.png
similarity index 100%
rename from images/app-icons/png/512x512.png
rename to code/images/app-icons/png/512x512.png
diff --git a/images/app-icons/png/64x64.png b/code/images/app-icons/png/64x64.png
similarity index 100%
rename from images/app-icons/png/64x64.png
rename to code/images/app-icons/png/64x64.png
diff --git a/images/app-icons/png/96x96.png b/code/images/app-icons/png/96x96.png
similarity index 100%
rename from images/app-icons/png/96x96.png
rename to code/images/app-icons/png/96x96.png
diff --git a/images/app-icons/win/icon.ico b/code/images/app-icons/win/icon.ico
similarity index 100%
rename from images/app-icons/win/icon.ico
rename to code/images/app-icons/win/icon.ico
diff --git a/images/icon-black.png b/code/images/icon-black.png
similarity index 100%
rename from images/icon-black.png
rename to code/images/icon-black.png
diff --git a/images/icon-black.svg b/code/images/icon-black.svg
similarity index 100%
rename from images/icon-black.svg
rename to code/images/icon-black.svg
diff --git a/images/icon-color.png b/code/images/icon-color.png
similarity index 100%
rename from images/icon-color.png
rename to code/images/icon-color.png
diff --git a/images/icon-color.svg b/code/images/icon-color.svg
similarity index 100%
rename from images/icon-color.svg
rename to code/images/icon-color.svg
diff --git a/images/icon-grey.png b/code/images/icon-grey.png
similarity index 100%
rename from images/icon-grey.png
rename to code/images/icon-grey.png
diff --git a/images/icon-grey.svg b/code/images/icon-grey.svg
similarity index 100%
rename from images/icon-grey.svg
rename to code/images/icon-grey.svg
diff --git a/images/icon.svg b/code/images/icon.svg
similarity index 100%
rename from images/icon.svg
rename to code/images/icon.svg
diff --git a/issue_template.md b/code/issue_template.md
similarity index 100%
rename from issue_template.md
rename to code/issue_template.md
diff --git a/jsdoc-conf.json b/code/jsdoc-conf.json
similarity index 100%
rename from jsdoc-conf.json
rename to code/jsdoc-conf.json
diff --git a/libraries/autocomplete.jquery.min.js b/code/libraries/autocomplete.jquery.min.js
similarity index 100%
rename from libraries/autocomplete.jquery.min.js
rename to code/libraries/autocomplete.jquery.min.js
diff --git a/libraries/bootstrap/css/bootstrap.min.css b/code/libraries/bootstrap/css/bootstrap.min.css
similarity index 100%
rename from libraries/bootstrap/css/bootstrap.min.css
rename to code/libraries/bootstrap/css/bootstrap.min.css
diff --git a/libraries/bootstrap/css/bootstrap.min.css.map b/code/libraries/bootstrap/css/bootstrap.min.css.map
similarity index 100%
rename from libraries/bootstrap/css/bootstrap.min.css.map
rename to code/libraries/bootstrap/css/bootstrap.min.css.map
diff --git a/libraries/bootstrap/js/bootstrap.bundle.min.js b/code/libraries/bootstrap/js/bootstrap.bundle.min.js
similarity index 100%
rename from libraries/bootstrap/js/bootstrap.bundle.min.js
rename to code/libraries/bootstrap/js/bootstrap.bundle.min.js
diff --git a/libraries/bootstrap/js/bootstrap.bundle.min.js.map b/code/libraries/bootstrap/js/bootstrap.bundle.min.js.map
similarity index 100%
rename from libraries/bootstrap/js/bootstrap.bundle.min.js.map
rename to code/libraries/bootstrap/js/bootstrap.bundle.min.js.map
diff --git a/libraries/boxicons/LICENSE b/code/libraries/boxicons/LICENSE
similarity index 100%
rename from libraries/boxicons/LICENSE
rename to code/libraries/boxicons/LICENSE
diff --git a/libraries/boxicons/css/boxicons.css b/code/libraries/boxicons/css/boxicons.css
similarity index 100%
rename from libraries/boxicons/css/boxicons.css
rename to code/libraries/boxicons/css/boxicons.css
diff --git a/libraries/boxicons/css/boxicons.min.css b/code/libraries/boxicons/css/boxicons.min.css
similarity index 100%
rename from libraries/boxicons/css/boxicons.min.css
rename to code/libraries/boxicons/css/boxicons.min.css
diff --git a/libraries/boxicons/fonts/boxicons.eot b/code/libraries/boxicons/fonts/boxicons.eot
similarity index 100%
rename from libraries/boxicons/fonts/boxicons.eot
rename to code/libraries/boxicons/fonts/boxicons.eot
diff --git a/libraries/boxicons/fonts/boxicons.svg b/code/libraries/boxicons/fonts/boxicons.svg
similarity index 100%
rename from libraries/boxicons/fonts/boxicons.svg
rename to code/libraries/boxicons/fonts/boxicons.svg
diff --git a/libraries/boxicons/fonts/boxicons.ttf b/code/libraries/boxicons/fonts/boxicons.ttf
similarity index 100%
rename from libraries/boxicons/fonts/boxicons.ttf
rename to code/libraries/boxicons/fonts/boxicons.ttf
diff --git a/libraries/boxicons/fonts/boxicons.woff b/code/libraries/boxicons/fonts/boxicons.woff
similarity index 100%
rename from libraries/boxicons/fonts/boxicons.woff
rename to code/libraries/boxicons/fonts/boxicons.woff
diff --git a/libraries/boxicons/fonts/boxicons.woff2 b/code/libraries/boxicons/fonts/boxicons.woff2
similarity index 100%
rename from libraries/boxicons/fonts/boxicons.woff2
rename to code/libraries/boxicons/fonts/boxicons.woff2
diff --git a/libraries/ckeditor/ckeditor-content.css b/code/libraries/ckeditor/ckeditor-content.css
similarity index 100%
rename from libraries/ckeditor/ckeditor-content.css
rename to code/libraries/ckeditor/ckeditor-content.css
diff --git a/code/libraries/ckeditor/ckeditor.js b/code/libraries/ckeditor/ckeditor.js
new file mode 100644
index 00000000000..bfd6ec92796
--- /dev/null
+++ b/code/libraries/ckeditor/ckeditor.js
@@ -0,0 +1,39207 @@
+! function(t) {
+ const e = t.en = t.en || {};
+ e.dictionary = Object.assign(e.dictionary || {}, {
+ "%0 of %1": "%0 of %1",
+ Accept: "Accept",
+ "Align cell text to the bottom": "Align cell text to the bottom",
+ "Align cell text to the center": "Align cell text to the center",
+ "Align cell text to the left": "Align cell text to the left",
+ "Align cell text to the middle": "Align cell text to the middle",
+ "Align cell text to the right": "Align cell text to the right",
+ "Align cell text to the top": "Align cell text to the top",
+ "Align table to the left": "Align table to the left",
+ "Align table to the right": "Align table to the right",
+ Alignment: "Alignment",
+ Aquamarine: "Aquamarine",
+ Background: "Background",
+ Big: "Big",
+ Black: "Black",
+ "Block quote": "Block quote",
+ Blue: "Blue",
+ Bold: "Bold",
+ Border: "Border",
+ "Break text": "Break text",
+ "Bulleted List": "Bulleted List",
+ "Bulleted list styles toolbar": "Bulleted list styles toolbar",
+ Cancel: "Cancel",
+ "Cannot upload file:": "Cannot upload file:",
+ "Caption for image: %0": "Caption for image: %0",
+ "Caption for the image": "Caption for the image",
+ "Cell properties": "Cell properties",
+ "Center table": "Center table",
+ "Centered image": "Centered image",
+ "Change image text alternative": "Change image text alternative",
+ "Choose heading": "Choose heading",
+ Circle: "Circle",
+ Code: "Code",
+ Color: "Color",
+ "Color picker": "Color picker",
+ Column: "Column",
+ Dashed: "Dashed",
+ Decimal: "Decimal",
+ "Decimal with leading zero": "Decimal with leading zero",
+ "Decrease indent": "Decrease indent",
+ Default: "Default",
+ "Delete column": "Delete column",
+ "Delete row": "Delete row",
+ "Dim grey": "Dim grey",
+ Dimensions: "Dimensions",
+ Disc: "Disc",
+ "Document colors": "Document colors",
+ Dotted: "Dotted",
+ Double: "Double",
+ Downloadable: "Downloadable",
+ "Dropdown toolbar": "Dropdown toolbar",
+ "Edit block": "Edit block",
+ "Edit link": "Edit link",
+ "Editor block content toolbar": "Editor block content toolbar",
+ "Editor contextual toolbar": "Editor contextual toolbar",
+ "Editor editing area: %0": "Editor editing area: %0",
+ "Editor toolbar": "Editor toolbar",
+ "Enter image caption": "Enter image caption",
+ "Enter table caption": "Enter table caption",
+ Find: "Find",
+ "Find and replace": "Find and replace",
+ "Find in text…": "Find in text…",
+ "Font Background Color": "Font Background Color",
+ "Font Color": "Font Color",
+ "Font Family": "Font Family",
+ "Font Size": "Font Size",
+ "Full size image": "Full size image",
+ Green: "Green",
+ Grey: "Grey",
+ Groove: "Groove",
+ "Header column": "Header column",
+ "Header row": "Header row",
+ Heading: "Heading",
+ "Heading 1": "Heading 1",
+ "Heading 2": "Heading 2",
+ "Heading 3": "Heading 3",
+ "Heading 4": "Heading 4",
+ "Heading 5": "Heading 5",
+ "Heading 6": "Heading 6",
+ Height: "Height",
+ HEX: "HEX",
+ "Horizontal line": "Horizontal line",
+ "Horizontal text alignment toolbar": "Horizontal text alignment toolbar",
+ Huge: "Huge",
+ "Image resize list": "Image resize list",
+ "Image toolbar": "Image toolbar",
+ "image widget": "image widget",
+ "In line": "In line",
+ "Increase indent": "Increase indent",
+ Insert: "Insert",
+ "Insert code block": "Insert code block",
+ "Insert column left": "Insert column left",
+ "Insert column right": "Insert column right",
+ "Insert image": "Insert image",
+ "Insert image via URL": "Insert image via URL",
+ "Insert paragraph after block": "Insert paragraph after block",
+ "Insert paragraph before block": "Insert paragraph before block",
+ "Insert row above": "Insert row above",
+ "Insert row below": "Insert row below",
+ "Insert table": "Insert table",
+ Inset: "Inset",
+ Italic: "Italic",
+ "Justify cell text": "Justify cell text",
+ "Left aligned image": "Left aligned image",
+ "Light blue": "Light blue",
+ "Light green": "Light green",
+ "Light grey": "Light grey",
+ Link: "Link",
+ "Link image": "Link image",
+ "Link URL": "Link URL",
+ "List properties": "List properties",
+ "Lower-latin": "Lower-latin",
+ "Lower–roman": "Lower–roman",
+ "Match case": "Match case",
+ "Merge cell down": "Merge cell down",
+ "Merge cell left": "Merge cell left",
+ "Merge cell right": "Merge cell right",
+ "Merge cell up": "Merge cell up",
+ "Merge cells": "Merge cells",
+ Next: "Next",
+ "Next result": "Next result",
+ None: "None",
+ "Numbered List": "Numbered List",
+ "Numbered list styles toolbar": "Numbered list styles toolbar",
+ "Open in a new tab": "Open in a new tab",
+ "Open link in new tab": "Open link in new tab",
+ Orange: "Orange",
+ Original: "Original",
+ Outset: "Outset",
+ Padding: "Padding",
+ Paragraph: "Paragraph",
+ "Plain text": "Plain text",
+ "Press Enter to type after or press Shift + Enter to type before the widget": "Press Enter to type after or press Shift + Enter to type before the widget",
+ Previous: "Previous",
+ "Previous result": "Previous result",
+ Purple: "Purple",
+ Red: "Red",
+ Redo: "Redo",
+ "Remove color": "Remove color",
+ "Remove Format": "Remove Format",
+ Replace: "Replace",
+ "Replace all": "Replace all",
+ "Replace with…": "Replace with…",
+ "Resize image": "Resize image",
+ "Resize image to %0": "Resize image to %0",
+ "Resize image to the original size": "Resize image to the original size",
+ "Restore default": "Restore default",
+ "Reversed order": "Reversed order",
+ "Rich Text Editor": "Rich Text Editor",
+ "Rich Text Editor. Editing area: %0": "Rich Text Editor. Editing area: %0",
+ Ridge: "Ridge",
+ "Right aligned image": "Right aligned image",
+ Row: "Row",
+ Save: "Save",
+ "Select all": "Select all",
+ "Select column": "Select column",
+ "Select row": "Select row",
+ "Show more items": "Show more items",
+ "Show options": "Show options",
+ "Side image": "Side image",
+ Small: "Small",
+ Solid: "Solid",
+ "Split cell horizontally": "Split cell horizontally",
+ "Split cell vertically": "Split cell vertically",
+ Square: "Square",
+ "Start at": "Start at",
+ "Start index must be greater than 0.": "Start index must be greater than 0.",
+ Strikethrough: "Strikethrough",
+ Style: "Style",
+ Subscript: "Subscript",
+ Superscript: "Superscript",
+ "Table alignment toolbar": "Table alignment toolbar",
+ "Table cell text alignment": "Table cell text alignment",
+ "Table properties": "Table properties",
+ "Table toolbar": "Table toolbar",
+ "Text alternative": "Text alternative",
+ "Text to find must not be empty.": "Text to find must not be empty.",
+ 'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".': 'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".',
+ 'The value is invalid. Try "10px" or "2em" or simply "2".': 'The value is invalid. Try "10px" or "2em" or simply "2".',
+ "This link has no URL": "This link has no URL",
+ Tiny: "Tiny",
+ "Tip: Find some text first in order to replace it.": "Tip: Find some text first in order to replace it.",
+ "To-do List": "To-do List",
+ "Toggle caption off": "Toggle caption off",
+ "Toggle caption on": "Toggle caption on",
+ "Toggle the circle list style": "Toggle the circle list style",
+ "Toggle the decimal list style": "Toggle the decimal list style",
+ "Toggle the decimal with leading zero list style": "Toggle the decimal with leading zero list style",
+ "Toggle the disc list style": "Toggle the disc list style",
+ "Toggle the lower–latin list style": "Toggle the lower–latin list style",
+ "Toggle the lower–roman list style": "Toggle the lower–roman list style",
+ "Toggle the square list style": "Toggle the square list style",
+ "Toggle the upper–latin list style": "Toggle the upper–latin list style",
+ "Toggle the upper–roman list style": "Toggle the upper–roman list style",
+ Turquoise: "Turquoise",
+ "Type or paste your content here.": "Type or paste your content here.",
+ "Type your title": "Type your title",
+ Underline: "Underline",
+ Undo: "Undo",
+ Unlink: "Unlink",
+ Update: "Update",
+ "Update image URL": "Update image URL",
+ "Upload failed": "Upload failed",
+ "Upload in progress": "Upload in progress",
+ "Upper-latin": "Upper-latin",
+ "Upper-roman": "Upper-roman",
+ "Vertical text alignment toolbar": "Vertical text alignment toolbar",
+ White: "White",
+ "Whole words only": "Whole words only",
+ "Widget toolbar": "Widget toolbar",
+ Width: "Width",
+ "Wrap text": "Wrap text",
+ Yellow: "Yellow"
+ })
+}(window.CKEDITOR_TRANSLATIONS || (window.CKEDITOR_TRANSLATIONS = {})),
+/*!
+ * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+function(t, e) {
+ "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.BalloonEditor = e() : t.BalloonEditor = e()
+}(self, (() => (() => {
+ var t = {
+ 4959: (t, e, n) => {
+ const o = n(1103),
+ i = {};
+ for (const t of Object.keys(o)) i[o[t]] = t;
+ const r = {
+ rgb: {
+ channels: 3,
+ labels: "rgb"
+ },
+ hsl: {
+ channels: 3,
+ labels: "hsl"
+ },
+ hsv: {
+ channels: 3,
+ labels: "hsv"
+ },
+ hwb: {
+ channels: 3,
+ labels: "hwb"
+ },
+ cmyk: {
+ channels: 4,
+ labels: "cmyk"
+ },
+ xyz: {
+ channels: 3,
+ labels: "xyz"
+ },
+ lab: {
+ channels: 3,
+ labels: "lab"
+ },
+ lch: {
+ channels: 3,
+ labels: "lch"
+ },
+ hex: {
+ channels: 1,
+ labels: ["hex"]
+ },
+ keyword: {
+ channels: 1,
+ labels: ["keyword"]
+ },
+ ansi16: {
+ channels: 1,
+ labels: ["ansi16"]
+ },
+ ansi256: {
+ channels: 1,
+ labels: ["ansi256"]
+ },
+ hcg: {
+ channels: 3,
+ labels: ["h", "c", "g"]
+ },
+ apple: {
+ channels: 3,
+ labels: ["r16", "g16", "b16"]
+ },
+ gray: {
+ channels: 1,
+ labels: ["gray"]
+ }
+ };
+ t.exports = r;
+ for (const t of Object.keys(r)) {
+ if (!("channels" in r[t])) throw new Error("missing channels property: " + t);
+ if (!("labels" in r[t])) throw new Error("missing channel labels property: " + t);
+ if (r[t].labels.length !== r[t].channels) throw new Error("channel and label counts mismatch: " + t);
+ const {
+ channels: e,
+ labels: n
+ } = r[t];
+ delete r[t].channels, delete r[t].labels, Object.defineProperty(r[t], "channels", {
+ value: e
+ }), Object.defineProperty(r[t], "labels", {
+ value: n
+ })
+ }
+ r.rgb.hsl = function(t) {
+ const e = t[0] / 255,
+ n = t[1] / 255,
+ o = t[2] / 255,
+ i = Math.min(e, n, o),
+ r = Math.max(e, n, o),
+ s = r - i;
+ let a, l;
+ r === i ? a = 0 : e === r ? a = (n - o) / s : n === r ? a = 2 + (o - e) / s : o === r && (a = 4 + (e - n) / s), a = Math.min(60 * a, 360), a < 0 && (a += 360);
+ const c = (i + r) / 2;
+ return l = r === i ? 0 : c <= .5 ? s / (r + i) : s / (2 - r - i), [a, 100 * l, 100 * c]
+ }, r.rgb.hsv = function(t) {
+ let e, n, o, i, r;
+ const s = t[0] / 255,
+ a = t[1] / 255,
+ l = t[2] / 255,
+ c = Math.max(s, a, l),
+ d = c - Math.min(s, a, l),
+ h = function(t) {
+ return (c - t) / 6 / d + .5
+ };
+ return 0 === d ? (i = 0, r = 0) : (r = d / c, e = h(s), n = h(a), o = h(l), s === c ? i = o - n : a === c ? i = 1 / 3 + e - o : l === c && (i = 2 / 3 + n - e), i < 0 ? i += 1 : i > 1 && (i -= 1)), [360 * i, 100 * r, 100 * c]
+ }, r.rgb.hwb = function(t) {
+ const e = t[0],
+ n = t[1];
+ let o = t[2];
+ const i = r.rgb.hsl(t)[0],
+ s = 1 / 255 * Math.min(e, Math.min(n, o));
+ return o = 1 - 1 / 255 * Math.max(e, Math.max(n, o)), [i, 100 * s, 100 * o]
+ }, r.rgb.cmyk = function(t) {
+ const e = t[0] / 255,
+ n = t[1] / 255,
+ o = t[2] / 255,
+ i = Math.min(1 - e, 1 - n, 1 - o);
+ return [100 * ((1 - e - i) / (1 - i) || 0), 100 * ((1 - n - i) / (1 - i) || 0), 100 * ((1 - o - i) / (1 - i) || 0), 100 * i]
+ }, r.rgb.keyword = function(t) {
+ const e = i[t];
+ if (e) return e;
+ let n, r = 1 / 0;
+ for (const e of Object.keys(o)) {
+ const i = o[e],
+ l = (a = i, ((s = t)[0] - a[0]) ** 2 + (s[1] - a[1]) ** 2 + (s[2] - a[2]) ** 2);
+ l < r && (r = l, n = e)
+ }
+ var s, a;
+ return n
+ }, r.keyword.rgb = function(t) {
+ return o[t]
+ }, r.rgb.xyz = function(t) {
+ let e = t[0] / 255,
+ n = t[1] / 255,
+ o = t[2] / 255;
+ e = e > .04045 ? ((e + .055) / 1.055) ** 2.4 : e / 12.92, n = n > .04045 ? ((n + .055) / 1.055) ** 2.4 : n / 12.92, o = o > .04045 ? ((o + .055) / 1.055) ** 2.4 : o / 12.92;
+ return [100 * (.4124 * e + .3576 * n + .1805 * o), 100 * (.2126 * e + .7152 * n + .0722 * o), 100 * (.0193 * e + .1192 * n + .9505 * o)]
+ }, r.rgb.lab = function(t) {
+ const e = r.rgb.xyz(t);
+ let n = e[0],
+ o = e[1],
+ i = e[2];
+ n /= 95.047, o /= 100, i /= 108.883, n = n > .008856 ? n ** (1 / 3) : 7.787 * n + 16 / 116, o = o > .008856 ? o ** (1 / 3) : 7.787 * o + 16 / 116, i = i > .008856 ? i ** (1 / 3) : 7.787 * i + 16 / 116;
+ return [116 * o - 16, 500 * (n - o), 200 * (o - i)]
+ }, r.hsl.rgb = function(t) {
+ const e = t[0] / 360,
+ n = t[1] / 100,
+ o = t[2] / 100;
+ let i, r, s;
+ if (0 === n) return s = 255 * o, [s, s, s];
+ i = o < .5 ? o * (1 + n) : o + n - o * n;
+ const a = 2 * o - i,
+ l = [0, 0, 0];
+ for (let t = 0; t < 3; t++) r = e + 1 / 3 * -(t - 1), r < 0 && r++, r > 1 && r--, s = 6 * r < 1 ? a + 6 * (i - a) * r : 2 * r < 1 ? i : 3 * r < 2 ? a + (i - a) * (2 / 3 - r) * 6 : a, l[t] = 255 * s;
+ return l
+ }, r.hsl.hsv = function(t) {
+ const e = t[0];
+ let n = t[1] / 100,
+ o = t[2] / 100,
+ i = n;
+ const r = Math.max(o, .01);
+ o *= 2, n *= o <= 1 ? o : 2 - o, i *= r <= 1 ? r : 2 - r;
+ return [e, 100 * (0 === o ? 2 * i / (r + i) : 2 * n / (o + n)), 100 * ((o + n) / 2)]
+ }, r.hsv.rgb = function(t) {
+ const e = t[0] / 60,
+ n = t[1] / 100;
+ let o = t[2] / 100;
+ const i = Math.floor(e) % 6,
+ r = e - Math.floor(e),
+ s = 255 * o * (1 - n),
+ a = 255 * o * (1 - n * r),
+ l = 255 * o * (1 - n * (1 - r));
+ switch (o *= 255, i) {
+ case 0:
+ return [o, l, s];
+ case 1:
+ return [a, o, s];
+ case 2:
+ return [s, o, l];
+ case 3:
+ return [s, a, o];
+ case 4:
+ return [l, s, o];
+ case 5:
+ return [o, s, a]
+ }
+ }, r.hsv.hsl = function(t) {
+ const e = t[0],
+ n = t[1] / 100,
+ o = t[2] / 100,
+ i = Math.max(o, .01);
+ let r, s;
+ s = (2 - n) * o;
+ const a = (2 - n) * i;
+ return r = n * i, r /= a <= 1 ? a : 2 - a, r = r || 0, s /= 2, [e, 100 * r, 100 * s]
+ }, r.hwb.rgb = function(t) {
+ const e = t[0] / 360;
+ let n = t[1] / 100,
+ o = t[2] / 100;
+ const i = n + o;
+ let r;
+ i > 1 && (n /= i, o /= i);
+ const s = Math.floor(6 * e),
+ a = 1 - o;
+ r = 6 * e - s, 0 != (1 & s) && (r = 1 - r);
+ const l = n + r * (a - n);
+ let c, d, h;
+ switch (s) {
+ default:
+ case 6:
+ case 0:
+ c = a, d = l, h = n;
+ break;
+ case 1:
+ c = l, d = a, h = n;
+ break;
+ case 2:
+ c = n, d = a, h = l;
+ break;
+ case 3:
+ c = n, d = l, h = a;
+ break;
+ case 4:
+ c = l, d = n, h = a;
+ break;
+ case 5:
+ c = a, d = n, h = l
+ }
+ return [255 * c, 255 * d, 255 * h]
+ }, r.cmyk.rgb = function(t) {
+ const e = t[0] / 100,
+ n = t[1] / 100,
+ o = t[2] / 100,
+ i = t[3] / 100;
+ return [255 * (1 - Math.min(1, e * (1 - i) + i)), 255 * (1 - Math.min(1, n * (1 - i) + i)), 255 * (1 - Math.min(1, o * (1 - i) + i))]
+ }, r.xyz.rgb = function(t) {
+ const e = t[0] / 100,
+ n = t[1] / 100,
+ o = t[2] / 100;
+ let i, r, s;
+ return i = 3.2406 * e + -1.5372 * n + -.4986 * o, r = -.9689 * e + 1.8758 * n + .0415 * o, s = .0557 * e + -.204 * n + 1.057 * o, i = i > .0031308 ? 1.055 * i ** (1 / 2.4) - .055 : 12.92 * i, r = r > .0031308 ? 1.055 * r ** (1 / 2.4) - .055 : 12.92 * r, s = s > .0031308 ? 1.055 * s ** (1 / 2.4) - .055 : 12.92 * s, i = Math.min(Math.max(0, i), 1), r = Math.min(Math.max(0, r), 1), s = Math.min(Math.max(0, s), 1), [255 * i, 255 * r, 255 * s]
+ }, r.xyz.lab = function(t) {
+ let e = t[0],
+ n = t[1],
+ o = t[2];
+ e /= 95.047, n /= 100, o /= 108.883, e = e > .008856 ? e ** (1 / 3) : 7.787 * e + 16 / 116, n = n > .008856 ? n ** (1 / 3) : 7.787 * n + 16 / 116, o = o > .008856 ? o ** (1 / 3) : 7.787 * o + 16 / 116;
+ return [116 * n - 16, 500 * (e - n), 200 * (n - o)]
+ }, r.lab.xyz = function(t) {
+ let e, n, o;
+ n = (t[0] + 16) / 116, e = t[1] / 500 + n, o = n - t[2] / 200;
+ const i = n ** 3,
+ r = e ** 3,
+ s = o ** 3;
+ return n = i > .008856 ? i : (n - 16 / 116) / 7.787, e = r > .008856 ? r : (e - 16 / 116) / 7.787, o = s > .008856 ? s : (o - 16 / 116) / 7.787, e *= 95.047, n *= 100, o *= 108.883, [e, n, o]
+ }, r.lab.lch = function(t) {
+ const e = t[0],
+ n = t[1],
+ o = t[2];
+ let i;
+ i = 360 * Math.atan2(o, n) / 2 / Math.PI, i < 0 && (i += 360);
+ return [e, Math.sqrt(n * n + o * o), i]
+ }, r.lch.lab = function(t) {
+ const e = t[0],
+ n = t[1],
+ o = t[2] / 360 * 2 * Math.PI;
+ return [e, n * Math.cos(o), n * Math.sin(o)]
+ }, r.rgb.ansi16 = function(t, e = null) {
+ const [n, o, i] = t;
+ let s = null === e ? r.rgb.hsv(t)[2] : e;
+ if (s = Math.round(s / 50), 0 === s) return 30;
+ let a = 30 + (Math.round(i / 255) << 2 | Math.round(o / 255) << 1 | Math.round(n / 255));
+ return 2 === s && (a += 60), a
+ }, r.hsv.ansi16 = function(t) {
+ return r.rgb.ansi16(r.hsv.rgb(t), t[2])
+ }, r.rgb.ansi256 = function(t) {
+ const e = t[0],
+ n = t[1],
+ o = t[2];
+ if (e === n && n === o) return e < 8 ? 16 : e > 248 ? 231 : Math.round((e - 8) / 247 * 24) + 232;
+ return 16 + 36 * Math.round(e / 255 * 5) + 6 * Math.round(n / 255 * 5) + Math.round(o / 255 * 5)
+ }, r.ansi16.rgb = function(t) {
+ let e = t % 10;
+ if (0 === e || 7 === e) return t > 50 && (e += 3.5), e = e / 10.5 * 255, [e, e, e];
+ const n = .5 * (1 + ~~(t > 50));
+ return [(1 & e) * n * 255, (e >> 1 & 1) * n * 255, (e >> 2 & 1) * n * 255]
+ }, r.ansi256.rgb = function(t) {
+ if (t >= 232) {
+ const e = 10 * (t - 232) + 8;
+ return [e, e, e]
+ }
+ let e;
+ t -= 16;
+ return [Math.floor(t / 36) / 5 * 255, Math.floor((e = t % 36) / 6) / 5 * 255, e % 6 / 5 * 255]
+ }, r.rgb.hex = function(t) {
+ const e = (((255 & Math.round(t[0])) << 16) + ((255 & Math.round(t[1])) << 8) + (255 & Math.round(t[2]))).toString(16).toUpperCase();
+ return "000000".substring(e.length) + e
+ }, r.hex.rgb = function(t) {
+ const e = t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+ if (!e) return [0, 0, 0];
+ let n = e[0];
+ 3 === e[0].length && (n = n.split("").map((t => t + t)).join(""));
+ const o = parseInt(n, 16);
+ return [o >> 16 & 255, o >> 8 & 255, 255 & o]
+ }, r.rgb.hcg = function(t) {
+ const e = t[0] / 255,
+ n = t[1] / 255,
+ o = t[2] / 255,
+ i = Math.max(Math.max(e, n), o),
+ r = Math.min(Math.min(e, n), o),
+ s = i - r;
+ let a, l;
+ return a = s < 1 ? r / (1 - s) : 0, l = s <= 0 ? 0 : i === e ? (n - o) / s % 6 : i === n ? 2 + (o - e) / s : 4 + (e - n) / s, l /= 6, l %= 1, [360 * l, 100 * s, 100 * a]
+ }, r.hsl.hcg = function(t) {
+ const e = t[1] / 100,
+ n = t[2] / 100,
+ o = n < .5 ? 2 * e * n : 2 * e * (1 - n);
+ let i = 0;
+ return o < 1 && (i = (n - .5 * o) / (1 - o)), [t[0], 100 * o, 100 * i]
+ }, r.hsv.hcg = function(t) {
+ const e = t[1] / 100,
+ n = t[2] / 100,
+ o = e * n;
+ let i = 0;
+ return o < 1 && (i = (n - o) / (1 - o)), [t[0], 100 * o, 100 * i]
+ }, r.hcg.rgb = function(t) {
+ const e = t[0] / 360,
+ n = t[1] / 100,
+ o = t[2] / 100;
+ if (0 === n) return [255 * o, 255 * o, 255 * o];
+ const i = [0, 0, 0],
+ r = e % 1 * 6,
+ s = r % 1,
+ a = 1 - s;
+ let l = 0;
+ switch (Math.floor(r)) {
+ case 0:
+ i[0] = 1, i[1] = s, i[2] = 0;
+ break;
+ case 1:
+ i[0] = a, i[1] = 1, i[2] = 0;
+ break;
+ case 2:
+ i[0] = 0, i[1] = 1, i[2] = s;
+ break;
+ case 3:
+ i[0] = 0, i[1] = a, i[2] = 1;
+ break;
+ case 4:
+ i[0] = s, i[1] = 0, i[2] = 1;
+ break;
+ default:
+ i[0] = 1, i[1] = 0, i[2] = a
+ }
+ return l = (1 - n) * o, [255 * (n * i[0] + l), 255 * (n * i[1] + l), 255 * (n * i[2] + l)]
+ }, r.hcg.hsv = function(t) {
+ const e = t[1] / 100,
+ n = e + t[2] / 100 * (1 - e);
+ let o = 0;
+ return n > 0 && (o = e / n), [t[0], 100 * o, 100 * n]
+ }, r.hcg.hsl = function(t) {
+ const e = t[1] / 100,
+ n = t[2] / 100 * (1 - e) + .5 * e;
+ let o = 0;
+ return n > 0 && n < .5 ? o = e / (2 * n) : n >= .5 && n < 1 && (o = e / (2 * (1 - n))), [t[0], 100 * o, 100 * n]
+ }, r.hcg.hwb = function(t) {
+ const e = t[1] / 100,
+ n = e + t[2] / 100 * (1 - e);
+ return [t[0], 100 * (n - e), 100 * (1 - n)]
+ }, r.hwb.hcg = function(t) {
+ const e = t[1] / 100,
+ n = 1 - t[2] / 100,
+ o = n - e;
+ let i = 0;
+ return o < 1 && (i = (n - o) / (1 - o)), [t[0], 100 * o, 100 * i]
+ }, r.apple.rgb = function(t) {
+ return [t[0] / 65535 * 255, t[1] / 65535 * 255, t[2] / 65535 * 255]
+ }, r.rgb.apple = function(t) {
+ return [t[0] / 255 * 65535, t[1] / 255 * 65535, t[2] / 255 * 65535]
+ }, r.gray.rgb = function(t) {
+ return [t[0] / 100 * 255, t[0] / 100 * 255, t[0] / 100 * 255]
+ }, r.gray.hsl = function(t) {
+ return [0, 0, t[0]]
+ }, r.gray.hsv = r.gray.hsl, r.gray.hwb = function(t) {
+ return [0, 100, t[0]]
+ }, r.gray.cmyk = function(t) {
+ return [0, 0, 0, t[0]]
+ }, r.gray.lab = function(t) {
+ return [t[0], 0, 0]
+ }, r.gray.hex = function(t) {
+ const e = 255 & Math.round(t[0] / 100 * 255),
+ n = ((e << 16) + (e << 8) + e).toString(16).toUpperCase();
+ return "000000".substring(n.length) + n
+ }, r.rgb.gray = function(t) {
+ return [(t[0] + t[1] + t[2]) / 3 / 255 * 100]
+ }
+ },
+ 841: (t, e, n) => {
+ const o = n(4959),
+ i = n(9325),
+ r = {};
+ Object.keys(o).forEach((t => {
+ r[t] = {}, Object.defineProperty(r[t], "channels", {
+ value: o[t].channels
+ }), Object.defineProperty(r[t], "labels", {
+ value: o[t].labels
+ });
+ const e = i(t);
+ Object.keys(e).forEach((n => {
+ const o = e[n];
+ r[t][n] = function(t) {
+ const e = function(...e) {
+ const n = e[0];
+ if (null == n) return n;
+ n.length > 1 && (e = n);
+ const o = t(e);
+ if ("object" == typeof o)
+ for (let t = o.length, e = 0; e < t; e++) o[e] = Math.round(o[e]);
+ return o
+ };
+ return "conversion" in t && (e.conversion = t.conversion), e
+ }(o), r[t][n].raw = function(t) {
+ const e = function(...e) {
+ const n = e[0];
+ return null == n ? n : (n.length > 1 && (e = n), t(e))
+ };
+ return "conversion" in t && (e.conversion = t.conversion), e
+ }(o)
+ }))
+ })), t.exports = r
+ },
+ 9325: (t, e, n) => {
+ const o = n(4959);
+
+ function i(t) {
+ const e = function() {
+ const t = {},
+ e = Object.keys(o);
+ for (let n = e.length, o = 0; o < n; o++) t[e[o]] = {
+ distance: -1,
+ parent: null
+ };
+ return t
+ }(),
+ n = [t];
+ for (e[t].distance = 0; n.length;) {
+ const t = n.pop(),
+ i = Object.keys(o[t]);
+ for (let o = i.length, r = 0; r < o; r++) {
+ const o = i[r],
+ s = e[o]; - 1 === s.distance && (s.distance = e[t].distance + 1, s.parent = t, n.unshift(o))
+ }
+ }
+ return e
+ }
+
+ function r(t, e) {
+ return function(n) {
+ return e(t(n))
+ }
+ }
+
+ function s(t, e) {
+ const n = [e[t].parent, t];
+ let i = o[e[t].parent][t],
+ s = e[t].parent;
+ for (; e[s].parent;) n.unshift(e[s].parent), i = r(o[e[s].parent][s], i), s = e[s].parent;
+ return i.conversion = n, i
+ }
+ t.exports = function(t) {
+ const e = i(t),
+ n = {},
+ o = Object.keys(e);
+ for (let t = o.length, i = 0; i < t; i++) {
+ const t = o[i];
+ null !== e[t].parent && (n[t] = s(t, e))
+ }
+ return n
+ }
+ },
+ 1103: t => {
+ "use strict";
+ t.exports = {
+ aliceblue: [240, 248, 255],
+ antiquewhite: [250, 235, 215],
+ aqua: [0, 255, 255],
+ aquamarine: [127, 255, 212],
+ azure: [240, 255, 255],
+ beige: [245, 245, 220],
+ bisque: [255, 228, 196],
+ black: [0, 0, 0],
+ blanchedalmond: [255, 235, 205],
+ blue: [0, 0, 255],
+ blueviolet: [138, 43, 226],
+ brown: [165, 42, 42],
+ burlywood: [222, 184, 135],
+ cadetblue: [95, 158, 160],
+ chartreuse: [127, 255, 0],
+ chocolate: [210, 105, 30],
+ coral: [255, 127, 80],
+ cornflowerblue: [100, 149, 237],
+ cornsilk: [255, 248, 220],
+ crimson: [220, 20, 60],
+ cyan: [0, 255, 255],
+ darkblue: [0, 0, 139],
+ darkcyan: [0, 139, 139],
+ darkgoldenrod: [184, 134, 11],
+ darkgray: [169, 169, 169],
+ darkgreen: [0, 100, 0],
+ darkgrey: [169, 169, 169],
+ darkkhaki: [189, 183, 107],
+ darkmagenta: [139, 0, 139],
+ darkolivegreen: [85, 107, 47],
+ darkorange: [255, 140, 0],
+ darkorchid: [153, 50, 204],
+ darkred: [139, 0, 0],
+ darksalmon: [233, 150, 122],
+ darkseagreen: [143, 188, 143],
+ darkslateblue: [72, 61, 139],
+ darkslategray: [47, 79, 79],
+ darkslategrey: [47, 79, 79],
+ darkturquoise: [0, 206, 209],
+ darkviolet: [148, 0, 211],
+ deeppink: [255, 20, 147],
+ deepskyblue: [0, 191, 255],
+ dimgray: [105, 105, 105],
+ dimgrey: [105, 105, 105],
+ dodgerblue: [30, 144, 255],
+ firebrick: [178, 34, 34],
+ floralwhite: [255, 250, 240],
+ forestgreen: [34, 139, 34],
+ fuchsia: [255, 0, 255],
+ gainsboro: [220, 220, 220],
+ ghostwhite: [248, 248, 255],
+ gold: [255, 215, 0],
+ goldenrod: [218, 165, 32],
+ gray: [128, 128, 128],
+ green: [0, 128, 0],
+ greenyellow: [173, 255, 47],
+ grey: [128, 128, 128],
+ honeydew: [240, 255, 240],
+ hotpink: [255, 105, 180],
+ indianred: [205, 92, 92],
+ indigo: [75, 0, 130],
+ ivory: [255, 255, 240],
+ khaki: [240, 230, 140],
+ lavender: [230, 230, 250],
+ lavenderblush: [255, 240, 245],
+ lawngreen: [124, 252, 0],
+ lemonchiffon: [255, 250, 205],
+ lightblue: [173, 216, 230],
+ lightcoral: [240, 128, 128],
+ lightcyan: [224, 255, 255],
+ lightgoldenrodyellow: [250, 250, 210],
+ lightgray: [211, 211, 211],
+ lightgreen: [144, 238, 144],
+ lightgrey: [211, 211, 211],
+ lightpink: [255, 182, 193],
+ lightsalmon: [255, 160, 122],
+ lightseagreen: [32, 178, 170],
+ lightskyblue: [135, 206, 250],
+ lightslategray: [119, 136, 153],
+ lightslategrey: [119, 136, 153],
+ lightsteelblue: [176, 196, 222],
+ lightyellow: [255, 255, 224],
+ lime: [0, 255, 0],
+ limegreen: [50, 205, 50],
+ linen: [250, 240, 230],
+ magenta: [255, 0, 255],
+ maroon: [128, 0, 0],
+ mediumaquamarine: [102, 205, 170],
+ mediumblue: [0, 0, 205],
+ mediumorchid: [186, 85, 211],
+ mediumpurple: [147, 112, 219],
+ mediumseagreen: [60, 179, 113],
+ mediumslateblue: [123, 104, 238],
+ mediumspringgreen: [0, 250, 154],
+ mediumturquoise: [72, 209, 204],
+ mediumvioletred: [199, 21, 133],
+ midnightblue: [25, 25, 112],
+ mintcream: [245, 255, 250],
+ mistyrose: [255, 228, 225],
+ moccasin: [255, 228, 181],
+ navajowhite: [255, 222, 173],
+ navy: [0, 0, 128],
+ oldlace: [253, 245, 230],
+ olive: [128, 128, 0],
+ olivedrab: [107, 142, 35],
+ orange: [255, 165, 0],
+ orangered: [255, 69, 0],
+ orchid: [218, 112, 214],
+ palegoldenrod: [238, 232, 170],
+ palegreen: [152, 251, 152],
+ paleturquoise: [175, 238, 238],
+ palevioletred: [219, 112, 147],
+ papayawhip: [255, 239, 213],
+ peachpuff: [255, 218, 185],
+ peru: [205, 133, 63],
+ pink: [255, 192, 203],
+ plum: [221, 160, 221],
+ powderblue: [176, 224, 230],
+ purple: [128, 0, 128],
+ rebeccapurple: [102, 51, 153],
+ red: [255, 0, 0],
+ rosybrown: [188, 143, 143],
+ royalblue: [65, 105, 225],
+ saddlebrown: [139, 69, 19],
+ salmon: [250, 128, 114],
+ sandybrown: [244, 164, 96],
+ seagreen: [46, 139, 87],
+ seashell: [255, 245, 238],
+ sienna: [160, 82, 45],
+ silver: [192, 192, 192],
+ skyblue: [135, 206, 235],
+ slateblue: [106, 90, 205],
+ slategray: [112, 128, 144],
+ slategrey: [112, 128, 144],
+ snow: [255, 250, 250],
+ springgreen: [0, 255, 127],
+ steelblue: [70, 130, 180],
+ tan: [210, 180, 140],
+ teal: [0, 128, 128],
+ thistle: [216, 191, 216],
+ tomato: [255, 99, 71],
+ turquoise: [64, 224, 208],
+ violet: [238, 130, 238],
+ wheat: [245, 222, 179],
+ white: [255, 255, 255],
+ whitesmoke: [245, 245, 245],
+ yellow: [255, 255, 0],
+ yellowgreen: [154, 205, 50]
+ }
+ },
+ 6299: (t, e, n) => {
+ "use strict";
+ n.d(e, {
+ Z: () => a
+ });
+ var o = n(1799),
+ i = n.n(o),
+ r = n(2609),
+ s = n.n(r)()(i());
+ s.push([t.id, ".ck.ck-math-form{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:nowrap}@media screen and (max-width:600px){.ck.ck-math-form{flex-wrap:wrap}.ck.ck-math-form .ck-math-view,.ck.ck-math-form .ck-math-view .ck-label,.ck.ck-math-form .ck-math-view .ck-labeled-view{flex-basis:100%}.ck.ck-math-form .ck-button{flex-basis:50%}}.ck-math-tex.ck-placeholder:before{display:none!important}.ck.ck-toolbar-container{z-index:calc(var(--ck-z-modal) + 2)}.ck.ck-math-form{padding:var(--ck-spacing-standard)}.ck.ck-math-form:focus{outline:none}[dir=ltr] .ck.ck-math-form>:not(:first-child),[dir=rtl] .ck.ck-math-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-math-form{padding:0}.ck.ck-math-form .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-math-form .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-math-form .ck-label,.ck.ck-math-form .ck-math-view .ck-button,.ck.ck-math-form .ck-math-view .ck.ck-math-preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-math-form>.ck-button{border:0;border-radius:0;border-top:1px solid var(--ck-color-base-border);margin-top:var(--ck-spacing-standard);padding:var(--ck-spacing-standard)}[dir=ltr] .ck.ck-math-form>.ck-button{margin-left:0}[dir=ltr] .ck.ck-math-form>.ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-math-form>.ck-button{margin-left:0}[dir=rtl] .ck.ck-math-form>.ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}", "", {
+ version: 3,
+ sources: ["webpack://./../../node_modules/@isaul32/ckeditor5-math/theme/mathform.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-math/mathform.css", "webpack://./../ckeditor5-ui/theme/mixins/_rwd.css"],
+ names: [],
+ mappings: "AAAA,iBAEC,sBAAuB,CADvB,YAAa,CAEb,kBAAmB,CACnB,gBAsBD,CAnBC,oCAPD,iBAQE,cAkBF,CATG,wHACC,eACD,CAGD,4BACC,cACD,CACD,CAGD,mCACC,sBACD,CAEA,yBACC,mCACD,CC/BA,iBACI,kCAsEJ,CApEI,uBAEF,YACD,CASC,2FACC,sCACD,CCdD,oCDHD,iBAqBE,SAkDF,CAhDE,mCACC,8DAMD,CAJC,kDACC,WAAY,CACZ,UACD,CAYA,wHACC,8DACD,CAGD,4BAKC,QAAS,CADT,eAAgB,CAEhB,gDAAiD,CAJjD,qCAAsC,CADtC,kCAsBD,CAvBA,sCASE,aAcF,CAZE,oDACC,kDACD,CAbF,sCAiBE,aAMF,CAJE,mDACC,kDACD,CC9DH",
+ sourcesContent: [".ck.ck-math-form {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tpadding: var(--ck-spacing-standard);\n\n\t@media screen and (max-width: 600px) {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-math-view {\n\t\t\tflex-basis: 100%;\n\n\t\t\t& .ck-labeled-view {\n\t\t\t\tflex-basis: 100%;\n\t\t\t}\n\n\t\t\t& .ck-label {\n\t\t\t\tflex-basis: 100%;\n\t\t\t}\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n\n.ck-math-tex.ck-placeholder::before {\n\tdisplay: none !important;\n}\n\n.ck.ck-toolbar-container {\n\tz-index: calc(var(--ck-z-modal) + 2);\n}\n", '@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-math-form {\n padding: var(--ck-spacing-standard);\n\n &:focus {\n\t\t/* https://github.com/ckeditor/ckeditor5-link/issues/90 */\n\t\toutline: none;\n\t}\n\n @mixin ck-dir ltr {\n\t\t& > :not(:first-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& > :not(:last-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\tpadding: 0;\n\n\t\t& .ck-labeled-input {\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\n\n\t\t\t& .ck-input-text {\n\t\t\t\tmin-width: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\n & .ck-label {\n margin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\n }\n\n\t\t& .ck-math-view {\n\t\t\t& .ck-button {\n\t\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\n\t\t\t}\n\n\t\t\t& .ck.ck-math-preview {\n\t\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\n\t\t\t}\n\t\t}\n\n\t\t& > .ck-button {\n\t\t\tpadding: var(--ck-spacing-standard);\n\t\t\tmargin-top: var(--ck-spacing-standard);\n\n\t\t\tborder-radius: 0;\n\t\t\tborder: 0;\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\n\t\t\t\t&:first-of-type {\n\t\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: 0;\n\n\t\t\t\t&:last-of-type {\n\t\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n"],
+ sourceRoot: ""
+ }]);
+ const a = s
+ },
+ 8603: (t, e, n) => {
+ "use strict";
+ n.d(e, {
+ Z: () => a
+ });
+ var o = n(1799),
+ i = n.n(o),
+ r = n(2609),
+ s = n.n(r)()(i());
+ s.push([t.id, ".ck-content code{background-color:hsla(0,0%,78%,.3);border-radius:2px;padding:.15em}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}", "", {
+ version: 3,
+ sources: ["webpack://./../ckeditor5-basic-styles/theme/code.css"],
+ names: [],
+ mappings: "AAKA,iBACC,kCAAuC,CAEvC,iBAAkB,CADlB,aAED,CAEA,0CACC,kCACD",
+ sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content code {\n\tbackground-color: hsla(0, 0%, 78%, 0.3);\n\tpadding: .15em;\n\tborder-radius: 2px;\n}\n\n.ck.ck-editor__editable .ck-code_selected {\n\tbackground-color: hsla(0, 0%, 78%, 0.5);\n}\n"],
+ sourceRoot: ""
+ }]);
+ const a = s
+ },
+ 3062: (t, e, n) => {
+ "use strict";
+ n.d(e, {
+ Z: () => a
+ });
+ var o = n(1799),
+ i = n.n(o),
+ r = n(2609),
+ s = n.n(r)()(i());
+ s.push([t.id, ".ck-content blockquote{border-left:5px solid #ccc;font-style:italic;margin-left:0;margin-right:0;overflow:hidden;padding-left:1.5em;padding-right:1.5em}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}", "", {
+ version: 3,
+ sources: ["webpack://./../ckeditor5-block-quote/theme/blockquote.css"],
+ names: [],
+ mappings: "AAKA,uBAWC,0BAAsC,CADtC,iBAAkB,CAFlB,aAAc,CACd,cAAe,CAPf,eAAgB,CAIhB,kBAAmB,CADnB,mBAOD,CAEA,gCACC,aAAc,CACd,2BACD",
+ sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content blockquote {\n\t/* See #12 */\n\toverflow: hidden;\n\n\t/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */\n\tpadding-right: 1.5em;\n\tpadding-left: 1.5em;\n\n\tmargin-left: 0;\n\tmargin-right: 0;\n\tfont-style: italic;\n\tborder-left: solid 5px hsl(0, 0%, 80%);\n}\n\n.ck-content[dir="rtl"] blockquote {\n\tborder-left: 0;\n\tborder-right: solid 5px hsl(0, 0%, 80%);\n}\n'],
+ sourceRoot: ""
+ }]);
+ const a = s
+ },
+ 9932: (t, e, n) => {
+ "use strict";
+ n.d(e, {
+ Z: () => a
+ });
+ var o = n(1799),
+ i = n.n(o),
+ r = n(2609),
+ s = n.n(r)()(i());
+ s.push([t.id, ".ck-find-result{background:var(--ck-color-highlight-background);color:var(--ck-color-text)}.ck-find-result_selected{background:#ff9633}", "", {
+ version: 3,
+ sources: ["webpack://./node_modules/@ckeditor/ckeditor5-find-and-replace/theme/findandreplace.css"],
+ names: [],
+ mappings: "AAKA,gBACC,+CAAgD,CAChD,0BACD,CAEA,yBACC,kBACD",
+ sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-find-result {\n\tbackground: var(--ck-color-highlight-background);\n\tcolor: var(--ck-color-text);\n}\n\n.ck-find-result_selected {\n\tbackground: hsl(29, 100%, 60%);\n}\n"],
+ sourceRoot: ""
+ }]);
+ const a = s
+ },
+ 2822: (t, e, n) => {
+ "use strict";
+ n.d(e, {
+ Z: () => a
+ });
+ var o = n(1799),
+ i = n.n(o),
+ r = n(2609),
+ s = n.n(r)()(i());
+ s.push([t.id, ".ck.ck-find-and-replace-form{max-width:100%}.ck.ck-find-and-replace-form fieldset{display:flex}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{position:absolute}.ck.ck-find-and-replace-form{width:400px}.ck.ck-find-and-replace-form:focus{outline:none}.ck.ck-find-and-replace-form fieldset{align-content:stretch;align-items:center;border:0;flex-direction:row;flex-wrap:nowrap;margin:0;padding:var(--ck-spacing-large)}.ck.ck-find-and-replace-form fieldset>.ck-button{flex:0 0 auto}[dir=ltr] .ck.ck-find-and-replace-form fieldset>*+*{margin-left:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-find-and-replace-form fieldset>*+*{margin-right:var(--ck-spacing-standard)}.ck.ck-find-and-replace-form fieldset .ck-labeled-field-view{flex:1 1 auto}.ck.ck-find-and-replace-form fieldset .ck-labeled-field-view .ck-input{min-width:50px;width:100%}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find{align-items:flex-start}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button-find{font-weight:700}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button-find .ck-button__label{padding-left:var(--ck-spacing-large);padding-right:var(--ck-spacing-large)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button-prev>.ck-icon{transform:rotate(90deg)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button-next>.ck-icon{transform:rotate(-90deg)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{top:50%;transform:translateY(-50%)}[dir=ltr] .ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{left:var(--ck-spacing-standard)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{color:var(--ck-color-base-border)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace{flex-wrap:wrap;justify-content:flex-end;margin-top:calc(var(--ck-spacing-large)*-1)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-labeled-field-view{margin-bottom:var(--ck-spacing-large)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-options-dropdown{margin-left:0;margin-right:auto}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-labeled-field-view,.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-labeled-field-view .ck-input{width:100%}@media screen and (max-width:600px){.ck.ck-find-and-replace-form{width:300px}.ck.ck-find-and-replace-form fieldset{flex-wrap:wrap}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-labeled-field-view{flex:1 0 auto;margin-bottom:var(--ck-spacing-standard);width:100%}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button{text-align:center}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button:first-of-type{flex:1 1 auto}[dir=ltr] .ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button:first-of-type{margin-left:0}[dir=rtl] .ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button:first-of-type{margin-right:0}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button:first-of-type .ck-button__label{text-align:center;width:100%}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>:not(.ck-labeled-field-view){flex:1 1 auto}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-dropdown:not(.ck-labeled-field-view){flex-grow:0}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-button:not(.ck-labeled-field-view)>.ck-button__label{text-align:center;width:100%}}", "", {
+ version: 3,
+ sources: ["webpack://./node_modules/@ckeditor/ckeditor5-find-and-replace/theme/findandreplaceform.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-find-and-replace/findandreplaceform.css", "webpack://./../ckeditor5-ui/theme/mixins/_rwd.css"],
+ names: [],
+ mappings: "AAKA,6BACC,cAUD,CARC,sCACC,YAMD,CAHC,yFACC,iBACD,CCNF,6BACC,WAyGD,CAnGC,mCACC,YACD,CAEA,sCAIC,qBAAsB,CADtB,kBAAmB,CAInB,QAAS,CANT,kBAAmB,CACnB,gBAAiB,CAMjB,QAAS,CAFT,+BAwFD,CApFC,iDACC,aACD,CAGC,oDACC,sCACD,CAIA,oDACC,uCACD,CAGD,6DACC,aAMD,CAJC,uEAEC,cAAe,CADf,UAED,CAID,qEAEC,sBAkCD,CAhCC,qFACC,eAOD,CAJC,uGACC,oCAAqC,CACrC,qCACD,CAGD,8FACC,uBACD,CAEA,8FACC,wBACD,CAEA,yFACC,OAAQ,CACR,0BAWD,CAbA,mGAKE,gCAQF,CAbA,mGASE,+BAIF,CAbA,yFAYC,iCACD,CAID,wEACC,cAAe,CACf,wBAAyB,CACzB,2CAeD,CAbC,+FACC,qCACD,CAEA,6FAEC,aAAc,CADd,iBAED,CAEA,wMAEC,UACD,CCzGF,oCD+GA,6BACC,WAiDD,CA/CC,sCACC,cA6CD,CAzCE,4FACC,aAAc,CAEd,wCAAyC,CADzC,UAED,CAEA,gFACC,iBAkBD,CAhBC,8FACC,aAcD,CAfA,wGAIE,aAWF,CAfA,wGAQE,cAOF,CAJC,gHAEC,iBAAkB,CADlB,UAED,CAMH,qGACC,aAUD,CARC,iHACC,WACD,CAEA,iIAEC,iBAAkB,CADlB,UAED,CC5JH",
+ sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-find-and-replace-form {\n\tmax-width: 100%;\n\n\t& fieldset {\n\t\tdisplay: flex;\n\n\t\t/* The find fieldset */\n\t\t&.ck-find-and-replace-form__find .ck-results-counter {\n\t\t\tposition: absolute;\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-find-and-replace-form {\n\twidth: 400px;\n\n\t/*\n\t * The