diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 6e03e78..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,48 +0,0 @@ -version: 2 -jobs: - build: - docker: - - image: docker:latest - environment: - - di: "nfpis/nfpmoe" - - dtag: "latest" - - service_name: "nfpmoe" - - target_port: "7030" # The public port - - service_port: "4030" # Container port - working_directory: ~/nfpmoe - steps: - - run: - name: Update and install SSH & Git & sed - command: apk update && apk upgrade && apk add --no-cache bash git openssh sed - - checkout - - setup_remote_docker - - run: - name: Replace version in config - command: | - sed -i "s/circleci_version_number/${CIRCLE_BUILD_NUM}/g" config/config.default.json - - run: - name: Build docker image - command: docker build -t ${di}:build_${CIRCLE_BUILD_NUM} -t ${di}:${CIRCLE_SHA1} -t ${di}:${dtag} . - - run: - name: Push to docker - command: | - docker login -u $DOCKER_USER -p $DOCKER_PASS - docker push ${di} --all-tags - - deploy: - name: Deploy to production - command: | - if [ "${CIRCLE_BRANCH}" != "master" ]; then - echo Not running on master. Exiting. - exit 0 - fi - echo "$MASTER_HOST" | base64 -d > ~/.ssh/master_host - echo "$MASTER_KEY" | base64 -d > ~/.ssh/master_key - chmod 600 ~/.ssh/master_key - ssh -p 51120 -i ~/.ssh/master_key -o "UserKnownHostsFile ~/.ssh/master_host" root@212.30.212.2 "docker ${service_name} ${di}:build_${CIRCLE_BUILD_NUM} ${target_port} ${service_port}" - -workflows: - version: 2 - build_deploy: - jobs: - - build: - context: org-global diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 9cf9495..0000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -package-lock=false \ No newline at end of file diff --git a/README.md b/README.md index 2e15eb3..6b6f6e8 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# nfp_moe \ No newline at end of file +# nfp_sites \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..73fed3e --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,82 @@ +# version format +version: '{build}' +deploy: on + +# branches to build +branches: + # whitelist + only: + - master + +# Do not build on tags (GitHub, Bitbucket, GitLab, Gitea) +skip_tags: true + +# Maximum number of concurrent jobs for the project +max_jobs: 1 +clone_depth: 1 + +# Build worker image (VM template) +build_cloud: Docker + +environment: + docker_image: node:16-alpine + npm_config_cache: /appveyor/projects/cache + +build_script: + - sh: | + chown -R node:node /appveyor/projects + chmod -R 777 /appveyor/projects + + apk add curl jq + if [ $? -eq 0 ]; then + echo "Finished installling curl and jq" + else + exit 1 + fi + + for f in *; do + [ ! -d "$f" ] || [ -L "$f" ] || [ "$f" = "base" ] && continue; + echo "checking $f"; + cd $f + CURR_VER="$(cat package.json | jq -r .name)_v$(cat package.json | jq -r .version)" + CURR_NAME="$(cat package.json | jq -r .name) v$(cat package.json | jq -r .version)" + echo "Checking https://git.nfp.is/api/v1/repos/$APPVEYOR_REPO_NAME/releases for name ${CURR_NAME}" + curl -s -X GET -H "Authorization: token $deploytoken" https://git.nfp.is/api/v1/repos/$APPVEYOR_REPO_NAME/releases | grep -o "\"name\"\:\"${CURR_NAME}\"" > /dev/null + + if [ $? -eq 0 ] ; then + echo "Skipping $f since $CURR_NAME already exists"; + else + rm base + cp -Rf ../base ./base + + npm install + npm run build + + ./7zas a -xr!*.xcf -mx9 "${CURR_VER}_build-sc.7z" package.json index.mjs api base public + echo "Creating release on gitea" + RELEASE_RESULT=$(curl \ + -X POST \ + -H "Authorization: token $deploytoken" \ + -H "Content-Type: application/json" \ + https://git.nfp.is/api/v1/repos/$APPVEYOR_REPO_NAME/releases \ + -d "{\"tag_name\":\"v${CURR_VER}\",\"name\":\"v${CURR_NAME}\",\"body\":\"Automatic release from Appveyor from ${APPVEYOR_REPO_COMMIT} :\n\n${APPVEYOR_REPO_COMMIT_MESSAGE}\"}") + RELEASE_ID=$(echo $RELEASE_RESULT | jq -r .id) + echo "Adding ${CURR_VER}_build-sc.7z to release ${RELEASE_ID}" + curl \ + -X POST \ + -H "Authorization: token $deploytoken" \ + -F "attachment=@${CURR_VER}_build-sc.7z" \ + https://git.nfp.is/api/v1/repos/$APPVEYOR_REPO_NAME/releases/$RELEASE_ID/assets + + echo "Deplying to production" + MAN_PORT=$(cat package.json | jq -r .port) + MAN_NAME=$(cat package.json | jq -r .name) + Echo "curl -X POST http://192.168.93.50:$MAN_PORT/update/$MAN_NAME" + curl -X POST http://192.168.93.50:$MAN_PORT/update/$MAN_NAME + fi + cd.. + done + +# on build failure +on_failure: + - sh: echo on_failure diff --git a/base/article/routes.mjs b/base/article/routes.mjs index 9d1afea..d5c88ab 100644 --- a/base/article/routes.mjs +++ b/base/article/routes.mjs @@ -1,5 +1,5 @@ import { parseArticles, parseArticle } from './util.mjs' -import { uploadMedia, uploadFile } from '../media/upload.mjs' +import { uploadMedia, uploadFile, deleteFile } from '../media/upload.mjs' import { mediaToDatabase } from '../media/util.mjs' export default class ArticleRoutes { @@ -7,6 +7,7 @@ export default class ArticleRoutes { Object.assign(this, { uploadMedia: uploadMedia, uploadFile: uploadFile, + deleteFile: deleteFile, }) } @@ -69,7 +70,6 @@ export default class ArticleRoutes { params = params.concat(mediaToDatabase(banner, body.remove_banner === 'true')) params = params.concat(mediaToDatabase(media, body.remove_media === 'true')) } - console.log(params) let res = await ctx.db.safeCallProc('article_auth_get_update_create', params) ctx.body = this.private_getUpdateArticle_resOutput(res) @@ -89,8 +89,6 @@ export default class ArticleRoutes { /** PUT: /api/auth/articles/:id */ async auth_updateCreateSingleArticle(ctx) { - console.log(ctx.req.body) - let newBanner = null let newMedia = null diff --git a/base/authentication/security.mjs b/base/authentication/security.mjs index d97e59d..a279c51 100644 --- a/base/authentication/security.mjs +++ b/base/authentication/security.mjs @@ -3,7 +3,7 @@ import { HttpError } from 'flaska' import { decode, encode } from '../util.mjs' import config from '../config.mjs' -const levels = { +export const RankLevels = { Normal: 1, Manager: 10, Admin: 100, @@ -12,7 +12,48 @@ const levels = { const issuer = config.get('mssql:connectionUser') const secret = config.get('jwtsecret') -export function authenticate(minLevel = levels.Manager) { +export function verifyValidToken(parts, minLevel) { + if (parts.length !== 4) { + throw new HttpError(401, 'Authentication token invalid') + } + + const hmac = crypto.createHmac('sha256', secret) + hmac.update([parts[0], parts[1], parts[2]].join('.')) + let apiSignature = encode(hmac.digest()) + + if (apiSignature !== parts[3]) { + throw new HttpError(401, 'Authentication token invalid signature') + } + + let header + let body + try { + header = JSON.parse(decode(parts[0]).toString('utf8')) + body = JSON.parse(decode(parts[1]).toString('utf8')) + } catch (err) { + throw new HttpError(401, 'Authentication token invalid json') + } + + if (header.alg !== 'HS256') { + throw new HttpError(401, 'Authentication token invalid alg') + } + + let unixNow = Math.floor(Date.now() / 1000) + + // Validate token, add a little skew support for issued_at + if (body.iss !== issuer || !body.iat || !body.exp + || body.iat > unixNow + 300 || body.exp <= unixNow) { + throw new HttpError(403, 'Authentication token expired or invalid') + } + + if (body.rank < minLevel) { + throw new HttpError(401, 'User does not have access to this resource') + } + + return body +} + +export function authenticate(minLevel = RankLevels.Manager) { return function(ctx) { if (!ctx.req.headers.authorization) { throw new HttpError(401, 'Authentication token missing') @@ -23,40 +64,7 @@ export function authenticate(minLevel = levels.Manager) { let parts = ctx.req.headers.authorization.slice(7).split('.') - if (parts.length !== 4) { - throw new HttpError(401, 'Authentication token invalid') - } - - const hmac = crypto.createHmac('sha256', secret) - const token = [parts[0], parts[1], parts[2]].join('.') - hmac.update(token) - let apiSignature = encode(hmac.digest()) - - if (apiSignature !== parts[3]) { - throw new HttpError(401, 'Authentication token invalid signature') - } - - let header - let body - try { - header = JSON.parse(decode(parts[0]).toString('utf8')) - body = JSON.parse(decode(parts[1]).toString('utf8')) - } catch (err) { - throw new HttpError(401, 'Authentication token invalid json') - } - - if (header.alg !== 'HS256') { - throw new HttpError(401, 'Authentication token invalid alg') - } - - let unixNow = Math.floor(Date.now() / 1000) - - // Validate token, add a little skew support for issued_at - if (body.iss !== issuer || !body.iat || !body.exp - || body.iat > unixNow + 300 || body.exp <= unixNow) { - throw new HttpError(403, 'Authentication token expired or invalid') - } - ctx.state.auth_user = body - ctx.state.auth_token = token + ctx.state.auth_user = verifyValidToken(parts, minLevel) + ctx.state.auth_token = [parts[0], parts[1], parts[2]].join('.') } } diff --git a/base/config.mjs b/base/config.mjs index 351ab42..b54f089 100644 --- a/base/config.mjs +++ b/base/config.mjs @@ -1,5 +1,6 @@ -import _ from 'lodash' -import nconf from 'nconf-lite' +import Nconf from 'nconf-lite' + +const nconf = new Nconf() // Helper method for global usage. nconf.inTest = () => nconf.get('NODE_ENV') === 'test' @@ -16,30 +17,15 @@ nconf.inTest = () => nconf.get('NODE_ENV') === 'test' nconf.env({ separator: '__', whitelist: [ - 'DATABASE_URL', 'NODE_ENV', - 'server__port', - 'server__host', - 'knex__connection__host', - 'knex__connection__user', - 'knex__connection__database', - 'knex__connection__password', - 'knex__connectionslave__host', - 'knex__connectionslave__user', - 'knex__connectionslave__database', - 'knex__connectionslave__password', - 'upload__baseurl', - 'upload__port', - 'upload__host', - 'upload__name', - 'upload__secret', - 'bunyan__name', + 'mssql__connectionString', + 'media__secret', + 'media__iss', + 'media__path', + 'media__filePath', + 'media__removePath', 'frontend__url', - 'jwt__secret', - 'sessionsecret', - 'bcrypt', - 'name', - 'NODE_VERSION', + 'jwtsecret', ], parseValues: true, }) @@ -67,6 +53,7 @@ nconf.defaults({ "iss": "dev", "path": "https://media.nfp.is/media/resize", "filePath": "https://media.nfp.is/media", + "removePath": "https://media.nfp.is/media/", "preview": { "out": "base64", "format": "avif", @@ -171,14 +158,7 @@ nconf.defaults({ } }, }, - "fileSize": 524288000, - "upload": { - "baseurl": "https://cdn.nfp.is", - "port": "2111", - "host": "storage01.nfp.is", - "name": "nfpmoe-dev", - "secret": "nfpmoe-dev" - } + "fileSize": 524288000 }) diff --git a/base/db.mjs b/base/db.mjs index 61a1e41..a6e16ae 100644 --- a/base/db.mjs +++ b/base/db.mjs @@ -10,31 +10,6 @@ export function initPool(core, config) { core.log.info('MSSQL connection open') }) - let waiting = false - - /*pool.on('error', function(error) { - if (error.length) { - let msg = 'Error in MSSQL pool\n => ' + error[0].message.trim() - for (let i = 1; i < error.length; i++) { - msg += '\n => ' + error[i].message.trim() - } - core.log.error(msg) - } else { - core.log.error('Error in MSSQL pool') - core.log.error(error) - } - - if (waiting) { return } - core.log.warn('Attempting to connect again in 5 seconds') - waiting = true - setTimeout(function() { - waiting = false - console.log('opening') - pool.open() - console.log('done') - }, 5000) - })*/ - core.log.info('Attempting to connect to MSSQL server') pool.open() diff --git a/base/media/client.mjs b/base/media/client.mjs index 3792dbe..9867e47 100644 --- a/base/media/client.mjs +++ b/base/media/client.mjs @@ -48,10 +48,8 @@ export default class Client { reject(err) }) req.on('timeout', function() { - console.log("req.on('timeout')") req.destroy() let d2 = new Date() - console.log((d2 - d1)) reject(new Error(`Request ${method} ${path} timed out`)) }) req.on('response', res => { @@ -141,6 +139,16 @@ export default class Client { }, }) } + + delete(url, body) { + let parsed = JSON.stringify(body) + return this.customRequest('DELETE', url, parsed, { + headers: { + 'Content-Type': 'application/json', + 'Content-Length': parsed.length, + }, + }) + } upload(url, files, method = 'POST', body = {}) { const boundary = `---------${this.random(32)}` diff --git a/base/media/upload.mjs b/base/media/upload.mjs index 6fe8537..095a16d 100644 --- a/base/media/upload.mjs +++ b/base/media/upload.mjs @@ -71,4 +71,13 @@ export function uploadFile(file) { type: file.type, } }) -} \ No newline at end of file +} + +export function deleteFile(filename) { + const media = config.get('media') + + const client = new Client() + let token = client.createJwt({ iss: media.iss }, media.secret) + + return client.delete(media.removePath + filename + '?token=' + token, { }) +} diff --git a/base/package.json b/base/package.json index f74019a..57dac2f 100644 --- a/base/package.json +++ b/base/package.json @@ -4,6 +4,6 @@ "flaska": "^1.3.1", "formidable": "^1.2.6", "msnodesqlv8": "^2.4.7", - "nconf-lite": "^1.0.1" + "nconf-lite": "^2.0.0" } } diff --git a/base/page/routes.mjs b/base/page/routes.mjs index c355ec0..7390464 100644 --- a/base/page/routes.mjs +++ b/base/page/routes.mjs @@ -1,4 +1,4 @@ -import { parsePage, parsePagesToTree } from './util.mjs' +import { parsePage, parsePages, parsePagesToTree } from './util.mjs' import { uploadMedia, uploadFile } from '../media/upload.mjs' import { parseArticle, parseArticles } from '../article/util.mjs' import { mediaToDatabase } from '../media/util.mjs' @@ -36,13 +36,17 @@ export default class PageRoutes { } /** GET: /api/pages/[path] */ - async getPage(ctx) { + async getPage(ctx, onlyReturn = false) { let res = await ctx.db.safeCallProc('pages_get_single', [ ctx.params.path || null, Math.max(ctx.query.get('page') || 1, 1), Math.min(ctx.query.get('per_page') || 10, 25), ]) + if (onlyReturn) { + return this.getPage_resOut(res) + } + ctx.body = this.getPage_resOut(res) } @@ -61,7 +65,7 @@ export default class PageRoutes { ctx.state.auth_token ]) - ctx.body = parsePagesToTree(res.first) + ctx.body = parsePagesToTree(parsePages(res.first)) } async private_getUpdatePage(ctx, body = null, banner = null, media = null) { @@ -80,7 +84,6 @@ export default class PageRoutes { params = params.concat(mediaToDatabase(banner, body.remove_banner === 'true')) params = params.concat(mediaToDatabase(media, body.remove_media === 'true')) } - console.log(params) let res = await ctx.db.safeCallProc('pages_auth_get_update_create', params) let out = { @@ -98,8 +101,6 @@ export default class PageRoutes { /** PUT: /api/auth/pages/:id */ async auth_updateCreateSinglePage(ctx) { - console.log(ctx.req.body) - let newBanner = null let newMedia = null diff --git a/base/page/util.mjs b/base/page/util.mjs index a96a839..f56077c 100644 --- a/base/page/util.mjs +++ b/base/page/util.mjs @@ -24,6 +24,13 @@ export function parsePagesToTree(pages) { } } +export function parsePages(pages) { + for (let i = 0; i < pages.length; i++) { + parsePage(pages[i]) + } + return pages +} + export function parsePage(page) { if (!page) { return null diff --git a/base/serve.mjs b/base/serve.mjs index e6afec0..eb6d44f 100644 --- a/base/serve.mjs +++ b/base/serve.mjs @@ -3,21 +3,26 @@ import dot from 'dot' import { FileResponse, HttpError } from 'flaska' import fs from 'fs/promises' import fsSync from 'fs' +import { RankLevels, verifyValidToken } from './authentication/security.mjs' export default class ServeHandler { constructor(opts = {}) { - Object.assign(this, { - pageRoutes: opts.pageRoutes, - fs: opts.fs || fs, - fsSync: opts.fsSync || fsSync, - root: opts.root, - template: null, - frontend: opts.frontend || 'http://localhost:4000', - version: opts.version || 'version', - }) + Object.assign(this, opts) + if (!opts.fs) { + this.fs = fs + } + if (!opts.fsSync) { + this.fsSync = fsSync + } + if (!opts.frontend) { + this.frontend = 'http://localhost:4000' + } + if (!opts.version) { + this.version = 'version' + } let indexFile = fsSync.readFileSync(path.join(this.root, 'index.html')) - this.template = dot.template(indexFile.toString(), { argName: ['headerDescription', 'headerImage', 'headerTitle', 'headerUrl', 'payloadData', 'payloadLinks', 'payloadTree', 'version', 'nonce'] }) + this.template = dot.template(indexFile.toString(), { argName: ['headerDescription', 'headerImage', 'headerTitle', 'headerUrl', 'payloadData', 'payloadTree', 'version', 'nonce'] }) // console.log(indexFile.toString()) } @@ -28,23 +33,35 @@ export default class ServeHandler { /** GET: /::file */ serve(ctx) { if (ctx.params.file.startsWith('api/')) { - throw new HttpError(404, 'Not Found: ' + ctx.params.file, { status: 404, message: 'Not Found: ' + ctx.params.file }) + return this.serveIndex(ctx) } let file = path.resolve(path.join(this.root, ctx.params.file ? ctx.params.file : 'index.html')) - if (!ctx.params.file || ctx.params.file === 'index.html') { + if (!ctx.params.file + || ctx.params.file === 'index.html' + || ctx.params.file.startsWith('/page') + || ctx.params.file.startsWith('/article') + || ctx.params.file.startsWith('/admin')) { return this.serveIndex(ctx) } if (!file.startsWith(this.root)) { - ctx.status = 404 - ctx.body = 'HTTP 404 Error' - return + return this.serveIndex(ctx) + } + + if (file.indexOf('admin') >= 0 + && (file.indexOf('.js') >= 0 || file.indexOf('.css') >= 0)) { + verifyValidToken((ctx.query.get('token') || '').split('.'), RankLevels.Manager) } return this.fs.stat(file) .then(function(stat) { + if (file.indexOf('admin') === -1) { + ctx.headers['Cache-Control'] = 'max-age=2592000' + } else { + ctx.headers['Cache-Control'] = 'no-store' + } ctx.body = new FileResponse(file, stat) }) .catch((err) => { @@ -56,25 +73,7 @@ export default class ServeHandler { } async serveIndex(ctx) { - let payload = { - headerDescription: 'Small fansubbing and scanlation group translating and encoding our favourite shows from Japan.', - headerImage: this.frontend + '/assets/img/heart.png', - headerTitle: 'NFP Moe - Anime/Manga translation group', - headerUrl: this.frontend + ctx.url, - payloadData: null, - payloadLinks: null, - payloadTree: null, - version: this.version, - nonce: ctx.state.nonce, - } - - try { - payload.payloadTree = JSON.stringify(await this.pageRoutes.getPageTree(ctx, true)) - } catch (e) { - ctx.log.error(e) - } - - ctx.body = this.template(payload) + ctx.body = this.template({}) ctx.type = 'text/html; charset=utf-8' } diff --git a/nfp_moe/api/article_routes.mjs b/nfp_moe/api/article_routes.mjs index 4e93758..fe68483 100644 --- a/nfp_moe/api/article_routes.mjs +++ b/nfp_moe/api/article_routes.mjs @@ -51,7 +51,6 @@ export default class ArticleRoutes extends Parent { } } let file = await this.uploadFile(ctx.req.files.file) - console.log(file) let params = [ ctx.state.auth_token, @@ -79,10 +78,10 @@ export default class ArticleRoutes extends Parent { null, null, ctx.params.fileId, - 0, + 1, ] let res = await ctx.db.safeCallProc('article_auth_file_create_delete', params) - console.log(res) + await this.deleteFile(res.first[0].deleted_filename) } } \ No newline at end of file diff --git a/nfp_moe/api/serve.mjs b/nfp_moe/api/serve.mjs new file mode 100644 index 0000000..df7490e --- /dev/null +++ b/nfp_moe/api/serve.mjs @@ -0,0 +1,34 @@ + +import Parent from '../base/serve.mjs' + +export default class ServeHandler extends Parent { + async serveIndex(ctx) { + let payload = { + headerDescription: 'Small fansubbing and scanlation group translating and encoding our favourite shows from Japan.', + headerImage: this.frontend + '/assets/img/heart.png', + headerTitle: 'NFP Moe - Anime/Manga translation group', + headerUrl: this.frontend + ctx.url, + payloadData: null, + payloadTree: null, + version: this.version, + nonce: ctx.state.nonce, + } + + try { + payload.payloadTree = JSON.stringify(await this.pageRoutes.getPageTree(ctx, true)) + if (ctx.url === '/' || (ctx.url.startsWith('/page/') && ctx.url.lastIndexOf('/') === 5)) { + ctx.params.path = null + if (ctx.url.lastIndexOf('/') === 5) { + ctx.params.path = ctx.url.slice(ctx.url.lastIndexOf('/') + 1) + } + payload.payloadData = JSON.stringify(await this.pageRoutes.getPage(ctx, true)) + } + console.log('url', ctx.url) + } catch (e) { + ctx.log.error(e) + } + + ctx.body = this.template(payload) + ctx.type = 'text/html; charset=utf-8' + } +} \ No newline at end of file diff --git a/nfp_moe/api/server.mjs b/nfp_moe/api/server.mjs index ae393bb..de849f9 100644 --- a/nfp_moe/api/server.mjs +++ b/nfp_moe/api/server.mjs @@ -1,6 +1,6 @@ import config from '../base/config.mjs' import Parent from '../base/server.mjs' -import ServeHandler from '../base/serve.mjs' +import ServeHandler from './serve.mjs' import ArticleRoutes from './article_routes.mjs' import PageRoutes from './page_routes.mjs' @@ -14,6 +14,7 @@ export default class Server extends Parent { this.routes.page = new PageRoutes() this.routes.serve = new ServeHandler({ pageRoutes: this.routes.page, + articleRoutes: this.routes.article, root: localUtil.getPathFromRoot('../public'), version: this.core.app.running, frontend: config.get('frontend:url'), diff --git a/nfp_moe/app/admin/fileupload.js b/nfp_moe/app/admin/fileupload.js index 8610e11..f373c39 100644 --- a/nfp_moe/app/admin/fileupload.js +++ b/nfp_moe/app/admin/fileupload.js @@ -24,6 +24,17 @@ const FileUpload = { vnode.attrs.onfile(out) }, + fileRemoved: function(vnode) { + if (this.preview) { + this.preview.clear() + this.preview = null + vnode.attrs.onfile(null) + } + if (vnode.attrs.media) { + vnode.attrs.ondelete(vnode.attrs.media) + } + }, + oninit: function(vnode) { this.loading = false this.preview = null @@ -66,10 +77,10 @@ const FileUpload = { type: 'file', onchange: this.fileChanged.bind(this, vnode), }), - /*imageLink && vnode.attrs.ondelete - ? m('button.remove', { onclick: vnode.attrs.ondelete }) + imageLink && vnode.attrs.ondelete + ? m('button.remove', { onclick: this.fileRemoved.bind(this, vnode), title: 'Remove image' }, m.trust('')) : null, - this.loading + /*this.loading ? m('div.loading-spinner') : null,*/ ]) diff --git a/nfp_moe/app/admin/site_articles.js b/nfp_moe/app/admin/site_articles.js index cbc11d2..a3eb79d 100644 --- a/nfp_moe/app/admin/site_articles.js +++ b/nfp_moe/app/admin/site_articles.js @@ -108,6 +108,12 @@ const AdminArticles = { ? 'rowfeatured' : '' }, [ + m('td.nopadding', article.banner_alt_prefix + ? m('a', { href: article.banner_path, target: '_blank' }, m('img', { src: article.banner_alt_prefix + '_small.avif' })) + : m.trust(' ') ), + m('td.nopadding', article.media_alt_prefix + ? m('a', { href: article.media_path, target: '_blank' }, m('img', { src: article.media_alt_prefix + '_small.avif' })) + : m.trust(' ') ), m('td', m(m.route.Link, { href: '/admin/articles/' + article.id }, article.name)), m('td', m(m.route.Link, { href: '/article/' + article.path }, 'View')), m('td', m(m.route.Link, { href: article.page_path }, article.page_name)), @@ -138,6 +144,8 @@ const AdminArticles = { : m('table', [ m('thead', m('tr', [ + m('th', 'Banner'), + m('th', 'Cover'), m('th', 'Title'), m('th', 'Path'), m('th', 'Page'), diff --git a/nfp_moe/app/admin/site_editarticle.js b/nfp_moe/app/admin/site_editarticle.js index d59b333..602cc5d 100644 --- a/nfp_moe/app/admin/site_editarticle.js +++ b/nfp_moe/app/admin/site_editarticle.js @@ -19,6 +19,8 @@ const EditArticle = { this.pages = [{id: null, name: 'Frontpage'}] this.pages = this.pages.concat(PageTree.getFlatTree()) + this.removeBanner = false + this.removeMedia = false this.newBanner = null this.newMedia = null this.dateInstance = null @@ -93,7 +95,13 @@ const EditArticle = { if (name === 'path') { this.editedPath = true } else if (name === 'name' && !this.editedPath) { - this.data.article.path = this.data.article.name.toLowerCase().replace(/ /g, '-') + this.data.article.path = this.data.article.name + .normalize("NFD").replace(/[\u0300-\u036f]/g, '') + .toLocaleLowerCase() + .replace(/[^a-z0-9]/g, '-') + .replace(/\-{2,}/g, '-') + .replace(/^-+/, '') + .replace(/-+$/, '') } }, @@ -108,14 +116,20 @@ const EditArticle = { mediaUploaded: function(type, file) { if (type === 'banner') { this.newBanner = file + this.removeBanner = false } else { this.newMedia = file + this.removeMedia = false } }, mediaRemoved: function(type) { - this.data.article['remove_' + type] = true - this.data.article[type + '_prefix'] = null + this.data.article[type + '_alt_prefix'] = null + if (type === 'banner') { + this.removeBanner = true + } else { + this.removeMedia = true + } }, save: function(vnode, e) { @@ -146,8 +160,8 @@ const EditArticle = { formData.append('path', this.data.article.path) formData.append('page_id', this.data.article.page_id || null) formData.append('publish_at', this.dateInstance.inputElem.value.replace(', ', 'T') + 'Z') - formData.append('remove_banner', this.data.article.remove_banner ? true : false) - formData.append('remove_media', this.data.article.remove_media ? true : false) + formData.append('remove_banner', this.removeBanner ? true : false) + formData.append('remove_media', this.removeMedia ? true : false) this.loading = true @@ -192,6 +206,9 @@ const EditArticle = { }, refreshFiles: function(vnode, prom) { + this.loading = true + m.redraw() + prom.then(() => { return api.sendRequest({ method: 'GET', @@ -204,21 +221,16 @@ const EditArticle = { this.error = err.message }) .then(() => { + this.loading = false m.redraw() }) }, confirmRemoveFile: function(vnode, file) { - console.log(file) - /*Dialogue.showDialogue( - 'Delete file', - 'Are you sure you want to remove "' + file.filename + '"', - 'Delete', - 'alert', - 'Don\'t delete', - '', - page, - this.confirmRemovePage.bind(this, vnode))*/ + return this.refreshFiles(vnode, api.sendRequest({ + method: 'DELETE', + url: '/api/auth/articles/' + this.lastid + '/files/' + file.id, + })) }, askConfirmRemoveFile: function(vnode, file) { diff --git a/nfp_moe/app/admin/site_pages.js b/nfp_moe/app/admin/site_pages.js index d243c8e..fe4d803 100644 --- a/nfp_moe/app/admin/site_pages.js +++ b/nfp_moe/app/admin/site_pages.js @@ -66,6 +66,12 @@ const AdminPages = { drawPage: function(vnode, page) { return [ m('tr', [ + m('td.nopadding', page.banner_alt_prefix + ? m('a', { href: page.banner_path, target: '_blank' }, m('img', { src: page.banner_alt_prefix + '_small.avif' })) + : m.trust(' ') ), + m('td.nopadding', page.media_alt_prefix + ? m('a', { href: page.media_path, target: '_blank' }, m('img', { src: page.media_alt_prefix + '_small.avif' })) + : m.trust(' ') ), m('td', [ page.parent_id ? m('span.subpage', ' - ') : null, m(m.route.Link, { href: '/admin/pages/' + page.id }, page.name), @@ -97,6 +103,8 @@ const AdminPages = { : m('table', [ m('thead', m('tr', [ + m('th', 'Banner'), + m('th', 'Cover'), m('th', 'Title'), m('th', 'Path'), m('th.right', 'Updated'), diff --git a/nfp_moe/app/article.js b/nfp_moe/app/article.js index d2294c0..2855da7 100644 --- a/nfp_moe/app/article.js +++ b/nfp_moe/app/article.js @@ -14,8 +14,8 @@ const Article = { if (this.lastId !== article.id) { this.lastId = article.id - let pictureCover = '(max-width: 639px) calc(100vw - 40px), ' - + '(max-width: 1000px) 300px, ' + let pictureCover = '(max-width: 639px) calc(100vw - 10px), ' + + '(max-width: 1000px) calc(100vw - 265px), ' + '400px' if (vnode.attrs.full) { pictureCover = '(max-width: 1280) calc(100vw - 2rem), ' diff --git a/nfp_moe/app/footer.js b/nfp_moe/app/footer.js index c0ab5a6..477c186 100644 --- a/nfp_moe/app/footer.js +++ b/nfp_moe/app/footer.js @@ -9,29 +9,33 @@ const Footer = { view: function() { return [ - m('span', 'Sitemap'), - m(m.route.Link, { class: 'root', href: '/' }, 'Home'), - PageTree.Tree.map(function(page) { - return [ - m(m.route.Link, { class: 'root', href: '/page/' + page.path }, page.name), - (page.children - ? m('ul', page.children.map(function(subpage) { - return m('li', m(m.route.Link, { class: 'child', href: '/page/' + subpage.path }, subpage.name)) - })) - : null), - ] - }), - - !Authentication.currentUser - ? m(m.route.Link, { class: 'root', href: '/login' }, 'Login') - : null, - m('div.meta', [ - '©' - + this.year - + ' NFP Encodes - nfp@nfp.moe - ', - m('a', { rel: 'noopener', href: 'https://www.iubenda.com/privacy-policy/31076050', target: '_blank' }, 'Privacy Policy'), - ' (Fuck EU)', + m('div.first'), + m('div.middle', [ + m('span', 'Sitemap'), + m(m.route.Link, { class: 'root', href: '/' }, 'Home'), + PageTree.Tree.map(function(page) { + return [ + m(m.route.Link, { class: 'root', href: '/page/' + page.path }, page.name), + (page.children + ? m('ul', page.children.map(function(subpage) { + return m('li', m(m.route.Link, { class: 'child', href: '/page/' + subpage.path }, subpage.name)) + })) + : null), + ] + }), + + !Authentication.currentUser + ? m(m.route.Link, { class: 'root', href: '/login' }, 'Login') + : null, + m('div.meta', [ + '©' + + this.year + + ' NFP Encodes - nfp@nfp.moe - ', + m('a', { rel: 'noopener', href: 'https://www.iubenda.com/privacy-policy/31076050', target: '_blank' }, 'Privacy Policy'), + ' (Fuck EU)', + ]), ]), + m('div.asuna.spritesheet'), ] }, } diff --git a/nfp_moe/app/header.js b/nfp_moe/app/header.js index 31692a2..5ec2841 100644 --- a/nfp_moe/app/header.js +++ b/nfp_moe/app/header.js @@ -54,7 +54,7 @@ const Menu = { } else { localStorage.removeItem(DarkModeStorageName) } - document.body.className = (this.darkIsOn ? 'darkmode ' : 'daymode ') + document.body.className = (this.darkIsOn ? 'nightmode ' : 'daymode ') + (window.supportsavif ? 'avifsupport' : 'jpegonly') }, @@ -63,8 +63,11 @@ const Menu = { m('header', [ m('div.inside', [ m(m.route.Link, - { href: '/', class: 'logo' }, - m('h1', 'NFP Moe') + { href: '/', class: 'title' }, + [ + m('div.logo.spritesheet'), + m('h1', 'NFP Moe'), + ] ), m('aside', [ Authentication.currentUser @@ -77,7 +80,7 @@ const Menu = { m(m.route.Link, { href: '/admin/articles/add' }, 'Create article'), m(m.route.Link, { href: '/admin/articles' }, 'Articles'), m(m.route.Link, { href: '/admin/pages' }, 'Pages'), - m(m.route.Link, { hidden: Authentication.currentUser.rank < 100, href: '/admin/staff' }, 'Staff'), + // m(m.route.Link, { hidden: Authentication.currentUser.rank < 100, href: '/admin/staff' }, 'Staff'), ]) ] : null, diff --git a/nfp_moe/app/index.js b/nfp_moe/app/index.js index bb39307..e2c4e52 100644 --- a/nfp_moe/app/index.js +++ b/nfp_moe/app/index.js @@ -6,6 +6,7 @@ const Footer = require('./footer') const Login = require('./site_login') const SitePage = require('./site_page') const SiteArticle = require('./site_article') +const NotFoundView = require('./site_404') window.m = m m.route.setOrig = m.route.set @@ -29,6 +30,7 @@ const allRoutes = { '/article/:id': SiteArticle, '/admin/:path': AdminResolver, '/admin/:path/:id': AdminResolver, + '/:404...': NotFoundView, } // Wait until we finish checking avif support, some views render immediately and will ask for this immediately before the callback gets called. diff --git a/nfp_moe/app/paginator.js b/nfp_moe/app/paginator.js index a9f500b..5e577ba 100644 --- a/nfp_moe/app/paginator.js +++ b/nfp_moe/app/paginator.js @@ -20,7 +20,7 @@ const Paginator = { ), }, 'Previous'), ] - : m('div'), + : [ m('div'), m('div')], m('div', 'Page ' + currentPage), currentPage < maxPage ? [ @@ -31,7 +31,7 @@ const Paginator = { href: vnode.attrs.base + '?page=' + maxPage, }, 'Last') ] - : m('div'), + : [ m('div'), m('div')], ]) }, } diff --git a/nfp_moe/app/site_404.js b/nfp_moe/app/site_404.js new file mode 100644 index 0000000..cfa4dee --- /dev/null +++ b/nfp_moe/app/site_404.js @@ -0,0 +1,20 @@ +const m = require('mithril') + +const NotFoundView = { + oninit: function(vnode) { + }, + + oncreate: function() { + }, + + view: function(vnode) { + return [ + m('div.wrapper.not_found', [ + m('h4.notfound', '404: Page, article or file was not found'), + m('div.asuna.spritesheet'), + ]), + ] + }, +} + +module.exports = NotFoundView diff --git a/nfp_moe/app/site_article.js b/nfp_moe/app/site_article.js index 7b3d68a..9dd39ec 100644 --- a/nfp_moe/app/site_article.js +++ b/nfp_moe/app/site_article.js @@ -2,6 +2,7 @@ const m = require('mithril') const Article = require('./article') const api = require('./api') const media = require('./media') +const NotFoundView = require('./site_404') window.LoadComments = false window.HyvorLoaded = false @@ -22,6 +23,7 @@ const SiteArticle = { this.path = m.route.param('id') this.data.article = window.__nfpdata window.__nfpdata = null + this.afterData() } else { this.fetchArticle(vnode) } @@ -58,10 +60,7 @@ const SiteArticle = { }) .then((result) => { this.data = result - - if (!this.data.article) { - this.error = 'Article not found' - } + this.afterData() }, (err) => { this.error = err.message }) @@ -73,6 +72,12 @@ const SiteArticle = { }) }, + afterData: function() { + if (!this.data.article) { + this.error = 'Article not found' + } + }, + view: function(vnode) { let article = this.data.article @@ -80,13 +85,16 @@ const SiteArticle = { this.loading ? m('div.loading-spinner') : null, - !this.loading && this.error + !this.loading && this.error === 'Article not found' + ? NotFoundView.view() + : null, + !this.loading && this.error && this.error !== 'Article not found' ? m('div.wrapper', m('div.error', { onclick: () => { this.error = '' this.fetchPage(vnode) }, - }, 'Page error: ' + this.error + '. Click here to try again')) + }, 'Article error: ' + this.error + '. Click here to try again')) : null, (article ? m('.inside.vertical', [ diff --git a/nfp_moe/app/site_login.js b/nfp_moe/app/site_login.js index 6bc5e69..2e2a576 100644 --- a/nfp_moe/app/site_login.js +++ b/nfp_moe/app/site_login.js @@ -59,13 +59,14 @@ const Login = { return [ m('div.wrapper', [ this.loading ? m('div.loading-spinner') : null, + m('div.login--first'), m('form.inside.login', { hidden: this.loading, onsubmit: this.loginuser.bind(this, vnode), }, [ m('div.title', 'NFP.moe login'), this.error ? m('div.error', this.error) : null, - m('label', 'Email'), + m('label', 'Email or name'), m('input', { type: 'text', value: this.username, @@ -82,6 +83,7 @@ const Login = { value: 'Log in', }), ]), + m('div.login--asuna.spritesheet'), ]), ] }, diff --git a/nfp_moe/app/site_page.js b/nfp_moe/app/site_page.js index 07fe4f4..1d8a0e4 100644 --- a/nfp_moe/app/site_page.js +++ b/nfp_moe/app/site_page.js @@ -7,6 +7,7 @@ const Article = require('./article') const Articleslim = require('./article_slim') const media = require('./media') const EditorBlock = require('./editorblock') +const NotFoundView = require('./site_404') const ArticlesPerPage = 10 @@ -25,12 +26,20 @@ const SitePage = { this.children = [] this.currentPage = Number(m.route.param('page')) || 1 + console.log('test', window.__nfpdata) if (window.__nfpdata) { this.path = m.route.param('id') - this.data = window.__nfpdata + this.lastpage = this.currentPage + this.data = window.__nfpdata window.__nfpdata = null - window.__nfpsubdata = null + + this.children = PageTree.Tree + if (this.path) { + this.children = PageTree.TreeMap.get(this.path) + this.children = this.children && this.children.children || [] + } + this.afterData() } else { this.fetchPage(vnode) } @@ -76,28 +85,7 @@ const SitePage = { }) .then((result) => { this.data = result - - if (!this.data.page && this.path) { - this.error = 'Page not found' - return - } - - let title = 'Page not found - NFP Moe - Anime/Manga translation group' - if (this.data.page) { - title = this.data.page.name + ' - NFP Moe' - } else if (!this.path) { - title = 'NFP Moe - Anime/Manga translation group' - } - - this.picture = media.generatePictureSource(this.data.page, - '(max-width: 840px) calc(100vw - 82px), ' - + '758px') - - if (this.lastpage !== 1) { - document.title = 'Page ' + this.lastpage + ' - ' + title - } else { - document.title = title - } + this.afterData() }, (err) => { this.error = err.message }) @@ -109,6 +97,30 @@ const SitePage = { }) }, + afterData: function() { + if (!this.data.page && this.path) { + this.error = 'Page not found' + return + } + + let title = 'Page not found - NFP Moe - Anime/Manga translation group' + if (this.data.page) { + title = this.data.page.name + ' - NFP Moe' + } else if (!this.path) { + title = 'NFP Moe - Anime/Manga translation group' + } + + this.picture = media.generatePictureSource(this.data.page, + '(max-width: 840px) calc(100vw - 82px), ' + + '758px') + + if (this.lastpage !== 1) { + document.title = 'Page ' + this.lastpage + ' - ' + title + } else { + document.title = title + } + }, + view: function(vnode) { let page = this.data.page let featuredBanner = media.getBannerImage(this.data.featured, '/article/') @@ -118,7 +130,10 @@ const SitePage = { this.loading ? m('div.loading-spinner') : null, - !this.loading && this.error + !this.loading && this.error === 'Page not found' + ? NotFoundView.view() + : null, + !this.loading && this.error && this.error !== 'Page not found' ? m('div.wrapper', m('div.error', { onclick: () => { this.error = '' @@ -163,52 +178,57 @@ const SitePage = { m('h2.title', page.name) ]) : null), - m('.inside', [ - this.children.length - ? m('aside', [ - m('h5', page ? 'View ' + page.name + ':' : 'Categories'), - this.children.map((page) => { - return [ - m(m.route.Link, { class: 'root', href: '/page/' + page.path }, page.name), - (page.children && page.children.length - ? m('ul', page.children.map(function(subpage) { - return m('li', m(m.route.Link, { class: 'child', href: '/page/' + subpage.path }, subpage.name)) - })) - : null), - ] - }) - ]) - : null, - m('div.container', [ - (page - ? media.getArticlePicture(this.picture, false, page.media_path, 'Image for page ' + page.name) - : null), - (page && page.content - ? m('div.content', page.content.blocks.map(block => { - return m(EditorBlock, { block: block }) - })) - : null), - (page && this.data.articles.length - ? [ - m('h5', 'Latest posts under ' + page.name + ':'), - this.data.articles.map(function(article) { - return m(Articleslim, { article: article }) - }), - ] - : null), - (!page && this.data.articles.length - ? this.data.articles.map(function(article) { - return m(Article, { article: article }) - }) - : null), - m(Paginator, { - base: page ? '/page/' + page.path : '/', - page: this.currentPage, - perPage: ArticlesPerPage, - total: this.data.total_articles, - }), - ]), - ]), + (page || this.data.articles.length + ? m('.inside', [ + this.children.length + ? m('aside', { class: page ? '' : 'frontpage' }, [ + m('h5', page ? 'View ' + page.name + ':' : 'Categories'), + this.children.map((page) => { + return [ + m(m.route.Link, { class: 'root', href: '/page/' + page.path }, page.name), + (page.children && page.children.length + ? m('ul', page.children.map(function(subpage) { + return m('li', m(m.route.Link, { class: 'child', href: '/page/' + subpage.path }, subpage.name)) + })) + : null), + ] + }), + !page + ? m('div.asuna.spritesheet') + : null, + ]) + : null, + m('div.container', [ + (page + ? media.getArticlePicture(this.picture, false, page.media_path, 'Image for page ' + page.name) + : null), + (page && page.content + ? m('div.content', page.content.blocks.map(block => { + return m(EditorBlock, { block: block }) + })) + : null), + (page && this.data.articles.length + ? [ + m('h5', 'Latest posts under ' + page.name + ':'), + this.data.articles.map(function(article) { + return m(Articleslim, { article: article }) + }), + ] + : null), + (!page && this.data.articles.length + ? this.data.articles.map(function(article) { + return m(Article, { article: article }) + }) + : null), + m(Paginator, { + base: page ? '/page/' + page.path : '/', + page: this.currentPage, + perPage: ArticlesPerPage, + total: this.data.total_articles, + }), + ]), + ]) + : null), ]) }, } diff --git a/nfp_moe/index.mjs b/nfp_moe/index.mjs index d23ba90..9eeb5bc 100644 --- a/nfp_moe/index.mjs +++ b/nfp_moe/index.mjs @@ -1,7 +1,7 @@ import config from '../base/config.mjs' export function start(http, port, ctx) { - config.stores.overrides.store = ctx.config + config.sources[1].store = ctx.config return import('./api/server.mjs') .then(function(module) { diff --git a/nfp_moe/package.json b/nfp_moe/package.json index 15a0c57..9a3f200 100644 --- a/nfp_moe/package.json +++ b/nfp_moe/package.json @@ -1,6 +1,7 @@ { "name": "nfp_moe", "version": "2.0.0", + "port": 4110, "description": "NFP Moe website", "main": "index.js", "directories": { @@ -55,7 +56,7 @@ "flaska": "^1.3.0", "formidable": "^1.2.6", "msnodesqlv8": "^2.4.7", - "nconf-lite": "^1.0.1" + "nconf-lite": "^2.0.0" }, "devDependencies": { "asbundle": "^2.6.1", diff --git a/nfp_moe/public/assets/admin.css b/nfp_moe/public/assets/admin.css index a6eada1..4b66699 100644 --- a/nfp_moe/public/assets/admin.css +++ b/nfp_moe/public/assets/admin.css @@ -10,6 +10,15 @@ --admin-table-header-fg: #fff; } +.nightmode { + --admin-bg: hsl(213.9, 100%, 20%); + --admin-bg-highlight: hsl(213.9, 100%, 35%); + --admin-color: #fff; + --admin-table-border: #01579b; + --admin-table-header-bg: #3D77C7; + --admin-table-header-fg: #fff; +} + /* ===================== main ===================== */ @@ -65,6 +74,18 @@ input[type=checkbox] { padding: 0.5rem; } +.admin table tbody td.nopadding { + padding: 0; + text-align: center; + width: 75px; +} + +.admin table tbody td.nopadding img { + margin: 0; + max-width: 75px; + max-height: 75px; +} + .admin table thead th { background-color: var(--admin-table-header-bg); border: solid 1px var(--admin-table-border); @@ -75,7 +96,8 @@ input[type=checkbox] { color: var(--alt-color); } -.admin table tr:hover td { +.admin table tr:hover td, +.admin table tr.rowfeatured td { background: var(--admin-bg-highlight); } @@ -197,6 +219,16 @@ fileupload .text { color: var(--seperator); } +fileupload .remove { + width: 50px; + height: 50px; + position: absolute; + top: 0; + right: 0; + margin: 0; + z-index: 3; +} + fileupload input, .fileupload input { position: absolute; @@ -224,6 +256,7 @@ fileupload input, flex-direction: column; justify-content: center; align-items: center; + z-index: 4; } dialogue { diff --git a/nfp_moe/public/assets/app.css b/nfp_moe/public/assets/app.css index db6dba9..d18d94b 100644 --- a/nfp_moe/public/assets/app.css +++ b/nfp_moe/public/assets/app.css @@ -20,7 +20,6 @@ --link: #bb4d00; --title-bg: #f57c00; --title-fg: #000; - --title-sublink: #27159C; --seperator: #ccc; --content-bg: #fff; --content-border: 0px solid transparent; @@ -43,6 +42,48 @@ --error-fg: white; } +.nightmode { + --content-max-width: 1280px; + --primary-darker-bg: #002f6c; + --primary-darker-fg: #fff; + --primary-darker-fg-light: #999; + --primary-darker-link: #ffad42; + + --primary-bg: #28518b; + --primary-fg: #fff; + --primary-fg-light: #999; + --primary-link: #f57c00; + + --bg: black; + --bg-content-alt: #333; + --color: #d7dadc; + --light: #bbb; + --link: #e05e00; + --title-bg: #e05e00; + --title-fg: #000; + --title-sublink: #27159C; + --seperator: #ccc; + --content-bg: #1a1a1b; + --content-border: 1px solid #343536; + + --alt-bg: #000; + --alt-inside-bg: #343536; + --alt-inside-border: 1px solid #808080; + --alt-color: #d7dadc; + + --footer-bg: #343536; + --footer-color: #d7dadc; + --footer-seperator: #666; + --footer-link: #fe791b; + + --button-border: 1px solid #f57c00; + --button-bg: #ffad42; + --button-fg: #000; + + --error-bg: red; + --error-fg: white; +} + /* ===================== Reset ===================== */ @@ -56,15 +97,6 @@ body, h1, h2, h3, h4, p, figure, blockquote, dl, dd { margin: 0; } -@font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; - font-style: oblique 0deg 10deg; - /* src: url("Inter.var.woff2?v=3.19") format("woff2");*/ - src: url(data:font/truetype;charset=utf-8;base64,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) format("woff2"); -} - body { min-height: 100vh; text-rendering: optimizeSpeed; @@ -72,6 +104,8 @@ body { font-size: 16px; font-family: 'Inter var', sans-serif; font-feature-settings: "slnt" 0deg, "case", "frac", "tnum", "ss02", "calt", "ccmp", "kern"; + background: var(--bg); + color: var(--color); } .italic { font-variation-settings: "slnt" 10deg; } @@ -170,10 +204,6 @@ button { flex-direction: column; } -.container { - margin: 1rem; -} - .error { background: var(--error-bg); color: var(--error-fg); @@ -183,8 +213,8 @@ button { } .wrapper { - background: var(--footer-bg); - color: var(--footer-color); + background: var(--alt-bg); + color: var(--alt-color); display: flex; justify-content: center; align-items: center; @@ -230,6 +260,20 @@ button { z-index: 1000; } +.notfound { + color: var(--light); +} + +@media screen and (max-width: 639px){ + main .inside { + flex-direction: column; + } + + .wrapper { + flex-direction: column; + } +} + /* ===================== Header ===================== */ @@ -249,10 +293,10 @@ header p { color: var(--primary-darker-fg-light); } -header .logo, -header .logo:visited { - height: 100px; - padding-left: 120px; +header .title, +header .title:visited { + min-height: 100px; + padding-left: 10px; display: flex; align-items: center; background: 25px center no-repeat; @@ -260,7 +304,15 @@ header .logo:visited { flex: 0 0 auto; } -header .logo h1 { +header .logo { + background-position: -119px 0px; + width: 81px; + height: 100px; + transform: scale(0.9); + margin-right: 1rem; +} + +header .title h1 { font-weight: 500; color: var(--primary-darker-fg); } @@ -283,13 +335,6 @@ header aside p button { margin-left: 0; } -.avifsupport header .logo { - background-image:url("/assets/img/logo.avif") -} -.jpegonly header .logo { - background-image:url("/assets/img/logo_small.jpg") -} - /* ===================== Nav ===================== */ @@ -315,6 +360,12 @@ nav .loading-spinner { position: relative; } +@media screen and (max-width: 639px){ + nav { + font-size: 0.8em; + } +} + /* ===================== main ===================== */ @@ -381,6 +432,7 @@ main h2.title, main .container { flex: 2 1 auto; + margin: 1rem; } main .cover picture img { @@ -398,13 +450,21 @@ main input[type=submit] { margin: 1rem 0 2rem; } +@media screen and (max-width: 639px){ + main .container { + margin: 1rem 0.25rem; + } +} + /* ************** aside ************** */ main aside { - padding: 0 0.5rem; + padding: 0.375rem 1rem 0.5rem; margin: 1rem; font-size: 0.875rem; - flex: 0 1 250px; + flex: 0 0 250px; + background: var(--content-bg); + border: var(--content-border); } main aside a { @@ -412,7 +472,8 @@ main aside a { } main aside h5 { - margin: 0 -0.5rem 0.75rem; + margin: 0 -0.5rem 0.25rem; + font-size: 0.9em; } main aside ul { @@ -420,6 +481,39 @@ main aside ul { padding-left: 1.5rem; } +main aside .asuna { + margin-top: 2rem; + width: 200px; + height: 461px; + background-position: 0 -150px; +} + +.nightmode main aside .asuna { + background-position: -200px -150px; +} + +.daymode .day { + display: block; +} + +@media screen and (max-width: 1000px){ + main aside { + flex: 0 0 200px; + } +} + +@media screen and (max-width: 639px){ + main aside { + margin: 1rem 0.25rem; + flex: 0 0 auto; + } + + main aside.frontpage { + order: 2; + } +} + + /* ************** paginator ************** */ paginator { @@ -478,6 +572,11 @@ articleslim a.title { /* ************** article ************** */ +article { + background: var(--content-bg); + border: var(--content-border); + margin-bottom: 1rem; +} article .row { margin: 1rem 0; @@ -498,6 +597,7 @@ article a.title { article .description { font-size: 0.875rem; margin-bottom: 1rem; + padding: 0 0.25rem; } article .meta { @@ -505,7 +605,7 @@ article .meta { line-height: 0.75rem; color: var(--light); font-weight: 500; - margin-top: 1.25rem; + padding: 1.25rem 0.25rem 0; } article.fullsize .row { @@ -517,6 +617,20 @@ article.fullsize .cover { margin-right: 0; } +@media screen and (max-width: 1000px){ + article .row { + flex-direction: column; + } + + article.fullsize .row { + margin: 1rem 0.25rem; + } + + article .cover { + margin-right: 0; + } +} + /* ************** fileinfo ************** */ fileinfo { @@ -550,6 +664,10 @@ fileinfo p span { font-weight: 700; } +fileinfo .trimmed { + padding: 0.25rem 0 0.25rem 1rem; +} + fileinfo ul { margin: 0.5rem 0; padding-left: 1.5rem; @@ -559,6 +677,10 @@ fileinfo ul { ===================== login ===================== */ +.login--first { + flex: 0 0 170px; +} + .login { align-items: center; font-size: 1rem; @@ -585,6 +707,35 @@ fileinfo ul { margin-top: 1rem; } +.login--asuna { + flex: 0 0 auto; + width: 180px; + height: 494px; + background-position: -400px 0; +} + +.nightmode .login--asuna { + background-position: -580px 0; +} + + +@media screen and (max-width: 1000px){ + .login--first { + display: none; + } +} + + +@media screen and (max-width: 639px){ + .login { + order: 2; + } + + .login--asuna { + max-width: 120px; + } +} + /* ===================== content ===================== */ @@ -617,12 +768,30 @@ footer { text-align: center; padding: 1rem; display: flex; - flex-direction: column; align-items: center; font-weight: 500; font-size: 0.625rem; } +footer .first { + flex: 0 0 119px; +} + +footer .middle { + display: flex; + flex-direction: column; + align-items: center; + flex: 2 1 auto; + padding: 0 2rem; +} + +footer .asuna { + flex: 0 0 119px; + height: 150px; + width: 119px; + background-position: 0px 0px; +} + footer ul { margin: 0 0 0.25rem; padding: 0 0 0.25rem; @@ -644,3 +813,66 @@ footer a { } +@media screen and (max-width: 1000px){ + footer .first { + display: none; + } +} + + +@media screen and (max-width: 639px){ + footer{ + flex-direction: column; + } + + footer .middle { + padding: 0 0 2rem; + } + + footer .asuna { + flex: 0 0 150px; + } +} + +/* + ===================== 404 page ===================== +*/ + +.not_found { + flex-direction: column; + text-align: center; +} + +.not_found .asuna { + width: 120px; + height: 444px; + margin: 2rem 0 0rem; + background-position: -760px 0; +} + +.nightmode .not_found .asuna { + background-position: -880px 0; +} + +/* + ===================== Large assets ===================== +*/ + +@font-face { + font-family: 'Inter var'; + font-weight: 100 900; + font-display: swap; + font-style: oblique 0deg 10deg; + /* src: url("Inter.var.woff2?v=3.19") format("woff2");*/ + src: url(data:font/truetype;charset=utf-8;base64,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) format("woff2"); +} + +.spritesheet { + background-image: url(data:image/avif;base64,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); + background-size: 1000px 611px; + background-repeat: no-repeat; +} + +.jpegonly .spritesheet { + background-image: url("/assets/img/combined.png") +} diff --git a/nfp_moe/public/assets/img/404_day_src.xcf b/nfp_moe/public/assets/img/404_day_src.xcf new file mode 100644 index 0000000..2775738 Binary files /dev/null and b/nfp_moe/public/assets/img/404_day_src.xcf differ diff --git a/nfp_moe/public/assets/img/404_night_src.xcf b/nfp_moe/public/assets/img/404_night_src.xcf new file mode 100644 index 0000000..ae95cdb Binary files /dev/null and b/nfp_moe/public/assets/img/404_night_src.xcf differ diff --git a/nfp_moe/public/assets/img/404_src.xcf b/nfp_moe/public/assets/img/404_src.xcf new file mode 100644 index 0000000..8b05ef1 Binary files /dev/null and b/nfp_moe/public/assets/img/404_src.xcf differ diff --git a/nfp_moe/public/assets/img/asuna_frontpage.avif b/nfp_moe/public/assets/img/asuna_frontpage.avif deleted file mode 100644 index 0990aba..0000000 Binary files a/nfp_moe/public/assets/img/asuna_frontpage.avif and /dev/null differ diff --git a/nfp_moe/public/assets/img/asuna_frontpage.jpg b/nfp_moe/public/assets/img/asuna_frontpage.jpg deleted file mode 100644 index ba99606..0000000 Binary files a/nfp_moe/public/assets/img/asuna_frontpage.jpg and /dev/null differ diff --git a/nfp_moe/public/assets/img/asuna_frontpage.png b/nfp_moe/public/assets/img/asuna_frontpage.png deleted file mode 100644 index 36f98fa..0000000 Binary files a/nfp_moe/public/assets/img/asuna_frontpage.png and /dev/null differ diff --git a/nfp_moe/public/assets/img/correct_asuna_frontpage.xcf b/nfp_moe/public/assets/img/asuna_frontpage_day.xcf similarity index 100% rename from nfp_moe/public/assets/img/correct_asuna_frontpage.xcf rename to nfp_moe/public/assets/img/asuna_frontpage_day.xcf diff --git a/nfp_moe/public/assets/img/correct_asuna_frontpage_night.xcf b/nfp_moe/public/assets/img/asuna_frontpage_night.xcf similarity index 100% rename from nfp_moe/public/assets/img/correct_asuna_frontpage_night.xcf rename to nfp_moe/public/assets/img/asuna_frontpage_night.xcf diff --git a/nfp_moe/public/assets/img/asuna_frontpage_test.avif b/nfp_moe/public/assets/img/asuna_frontpage_test.avif deleted file mode 100644 index ce99191..0000000 Binary files a/nfp_moe/public/assets/img/asuna_frontpage_test.avif and /dev/null differ diff --git a/nfp_moe/public/assets/img/asuna_frontpage_test.png b/nfp_moe/public/assets/img/asuna_frontpage_test.png deleted file mode 100644 index b2e9542..0000000 Binary files a/nfp_moe/public/assets/img/asuna_frontpage_test.png and /dev/null differ diff --git a/nfp_moe/public/assets/img/asuna_login_day_src.xcf b/nfp_moe/public/assets/img/asuna_login_day_src.xcf new file mode 100644 index 0000000..c17e21a Binary files /dev/null and b/nfp_moe/public/assets/img/asuna_login_day_src.xcf differ diff --git a/nfp_moe/public/assets/img/asuna_login_night_src.xcf b/nfp_moe/public/assets/img/asuna_login_night_src.xcf new file mode 100644 index 0000000..782a874 Binary files /dev/null and b/nfp_moe/public/assets/img/asuna_login_night_src.xcf differ diff --git a/nfp_moe/public/assets/img/combined.avif b/nfp_moe/public/assets/img/combined.avif new file mode 100644 index 0000000..2f5dfeb Binary files /dev/null and b/nfp_moe/public/assets/img/combined.avif differ diff --git a/nfp_moe/public/assets/img/combined.png b/nfp_moe/public/assets/img/combined.png new file mode 100644 index 0000000..faedb0f Binary files /dev/null and b/nfp_moe/public/assets/img/combined.png differ diff --git a/nfp_moe/public/assets/img/combined.xcf b/nfp_moe/public/assets/img/combined.xcf new file mode 100644 index 0000000..c704af6 Binary files /dev/null and b/nfp_moe/public/assets/img/combined.xcf differ diff --git a/nfp_moe/public/assets/img/dark_asuna_frontpage.avif b/nfp_moe/public/assets/img/dark_asuna_frontpage.avif deleted file mode 100644 index 0427cf1..0000000 Binary files a/nfp_moe/public/assets/img/dark_asuna_frontpage.avif and /dev/null differ diff --git a/nfp_moe/public/assets/img/dark_asuna_frontpage.jpg b/nfp_moe/public/assets/img/dark_asuna_frontpage.jpg deleted file mode 100644 index 41ff832..0000000 Binary files a/nfp_moe/public/assets/img/dark_asuna_frontpage.jpg and /dev/null differ diff --git a/nfp_moe/public/assets/img/dark_asuna_frontpage.png b/nfp_moe/public/assets/img/dark_asuna_frontpage.png deleted file mode 100644 index 8268274..0000000 Binary files a/nfp_moe/public/assets/img/dark_asuna_frontpage.png and /dev/null differ diff --git a/nfp_moe/public/assets/img/dark_tsun.jpg b/nfp_moe/public/assets/img/dark_tsun.jpg deleted file mode 100644 index d812682..0000000 Binary files a/nfp_moe/public/assets/img/dark_tsun.jpg and /dev/null differ diff --git a/nfp_moe/public/assets/img/dark_tsun_small.jpg b/nfp_moe/public/assets/img/dark_tsun_small.jpg deleted file mode 100644 index a1868d8..0000000 Binary files a/nfp_moe/public/assets/img/dark_tsun_small.jpg and /dev/null differ diff --git a/nfp_moe/public/assets/img/delete.svg b/nfp_moe/public/assets/img/delete.svg deleted file mode 100644 index 07874b2..0000000 --- a/nfp_moe/public/assets/img/delete.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - diff --git a/nfp_moe/public/assets/img/favicon.png b/nfp_moe/public/assets/img/favicon.png index 667da1d..d8f76d3 100644 Binary files a/nfp_moe/public/assets/img/favicon.png and b/nfp_moe/public/assets/img/favicon.png differ diff --git a/nfp_moe/public/assets/img/heart.jpg b/nfp_moe/public/assets/img/heart.jpg deleted file mode 100644 index cb6daf3..0000000 Binary files a/nfp_moe/public/assets/img/heart.jpg and /dev/null differ diff --git a/nfp_moe/public/assets/img/heart.png b/nfp_moe/public/assets/img/heart.png deleted file mode 100644 index 5693166..0000000 Binary files a/nfp_moe/public/assets/img/heart.png and /dev/null differ diff --git a/nfp_moe/public/assets/img/login.png b/nfp_moe/public/assets/img/login.png deleted file mode 100644 index f712dc3..0000000 Binary files a/nfp_moe/public/assets/img/login.png and /dev/null differ diff --git a/nfp_moe/public/assets/img/logo.avif b/nfp_moe/public/assets/img/logo.avif deleted file mode 100644 index 7d76c35..0000000 Binary files a/nfp_moe/public/assets/img/logo.avif and /dev/null differ diff --git a/nfp_moe/public/assets/img/logo.jpg b/nfp_moe/public/assets/img/logo.jpg deleted file mode 100644 index 6d506b5..0000000 Binary files a/nfp_moe/public/assets/img/logo.jpg and /dev/null differ diff --git a/nfp_moe/public/assets/img/logo.png b/nfp_moe/public/assets/img/logo.png deleted file mode 100644 index 48ed4d8..0000000 Binary files a/nfp_moe/public/assets/img/logo.png and /dev/null differ diff --git a/nfp_moe/public/assets/img/logo_small.jpg b/nfp_moe/public/assets/img/logo_small.jpg deleted file mode 100644 index eba88dd..0000000 Binary files a/nfp_moe/public/assets/img/logo_small.jpg and /dev/null differ diff --git a/nfp_moe/public/assets/img/tsun.avif b/nfp_moe/public/assets/img/tsun.avif deleted file mode 100644 index 5d53ed3..0000000 Binary files a/nfp_moe/public/assets/img/tsun.avif and /dev/null differ diff --git a/nfp_moe/public/assets/img/tsun.jpg b/nfp_moe/public/assets/img/tsun.jpg deleted file mode 100644 index 095cb89..0000000 Binary files a/nfp_moe/public/assets/img/tsun.jpg and /dev/null differ diff --git a/nfp_moe/public/assets/img/tsun.png b/nfp_moe/public/assets/img/tsun.png deleted file mode 100644 index da9f179..0000000 Binary files a/nfp_moe/public/assets/img/tsun.png and /dev/null differ diff --git a/nfp_moe/public/assets/img/tsun_small.jpg b/nfp_moe/public/assets/img/tsun_small.jpg deleted file mode 100644 index 011739f..0000000 Binary files a/nfp_moe/public/assets/img/tsun_small.jpg and /dev/null differ diff --git a/nfp_moe/public/assets/img/upload.svg b/nfp_moe/public/assets/img/upload.svg deleted file mode 100644 index 2ff44ab..0000000 --- a/nfp_moe/public/assets/img/upload.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/nfp_moe/public/index.html b/nfp_moe/public/index.html index d2dd760..4195280 100644 --- a/nfp_moe/public/index.html +++ b/nfp_moe/public/index.html @@ -17,19 +17,20 @@ {{? }} - - + + +
- + diff --git a/nfp_moe_old/.npmrc b/nfp_moe_old/.npmrc deleted file mode 100644 index 9cf9495..0000000 --- a/nfp_moe_old/.npmrc +++ /dev/null @@ -1 +0,0 @@ -package-lock=false \ No newline at end of file diff --git a/nfp_moe_old/api/server.mjs b/nfp_moe_old/api/server.mjs deleted file mode 100644 index c8df354..0000000 --- a/nfp_moe_old/api/server.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import config from '../base/config.mjs' -import Parent from '../base/server.mjs' -import ServeHandler from '../base/serve.mjs' -import PageRoutes from '../base/page/routes.mjs' - -export default class Server extends Parent { - addCustomRoutes() { - let page = this.getRouteInstance(PageRoutes) - - let localUtil = new this.core.sc.Util(import.meta.url) - this.routes.push(new ServeHandler({ - pageRoutes: page, - root: localUtil.getPathFromRoot('../public'), - version: this.core.app.running, - frontend: config.get('frontend:url'), - })) - } -} diff --git a/nfp_moe_old/app/_common.scss b/nfp_moe_old/app/_common.scss deleted file mode 100644 index 95d52f3..0000000 --- a/nfp_moe_old/app/_common.scss +++ /dev/null @@ -1,67 +0,0 @@ - -$primary-bg: #01579b; -$primary-fg: white; -$primary-fg-url: #FFC7C7; -$primary-light-bg: #3D77C7; // #4f83cc; -$primary-light-fg: white; -$primary-dark-bg: #002f6c; -$primary-dark-fg: white; - -$secondary-bg: #f57c00; -$secondary-fg: black; -$secondary-light-bg: #ffad42; -$secondary-light-fg: black; -$secondary-dark-bg: #bb4d00; -$secondary-dark-fg: white; - -$table-fg: #333; -$border: #ccc; -$border-fg: black; -$border-fg-url: #8f3c00; -$title-fg: #555; -$meta-fg: #757575; // #999 -$meta-light-fg: #999999; - -$main-bg: white; -$main-fg: black; -$input-bg: white; -$input-border: #333; -$input-fg: black; - -$newsitem-bg: transparent; -$newsitem-border: none; - -/* Dark theme */ - -$dark_primary-bg: #013b68; -$dark_primary-fg: white; -$dark_primary-fg-url: #FFC7C7; -$dark_primary-light-bg: #28518B; -$dark_primary-light-fg: white; -$dark_primary-dark-bg: #002f6c; -$dark_primary-dark-fg: white; - -$dark_secondary-bg: #e05e00; -$dark_secondary-fg: black; -$dark_secondary-light-bg: #ffad42; -$dark_secondary-light-fg: black; -$dark_secondary-dark-bg: #e05e00; -$dark_secondary-dark-fg: white; -$dark_secondary-darker-fg: #fe791b; - -$dark_table-fg: #333; -$dark_border: #343536; -$dark_border-fg: #d7dadc;; -$dark_border-fg-url: #e05e00; -$dark_title-fg: #808080; -$dark_meta-fg: hsl(0, 0%, 55%); -$dark_meta-light-fg: #999999; - -$dark_main-bg: black; -$dark_main-fg: #d7dadc; -$dark_input-bg: #272729; -$dark_input-border: #343536; -$dark_input-fg: white; - -$dark_newsitem-bg: #1a1a1b; -$dark_newsitem-border: 1px solid #343536; diff --git a/nfp_moe_old/app/admin.js b/nfp_moe_old/app/admin.js deleted file mode 100644 index c6a1cba..0000000 --- a/nfp_moe_old/app/admin.js +++ /dev/null @@ -1,12 +0,0 @@ -const EditPage = require('./admin/editpage') -const AdminPages = require('./admin/pages') -const AdminArticles = require('./admin/articles') -const EditArticle = require('./admin/editarticle') -const AdminStaffList = require('./admin/stafflist') -const EditStaff = require('./admin/editstaff') - -window.adminRoutes = { - pages: [AdminPages, EditPage], - articles: [AdminArticles, EditArticle], - staff: [AdminStaffList, EditStaff], -} diff --git a/nfp_moe_old/app/admin.scss b/nfp_moe_old/app/admin.scss deleted file mode 100644 index 4a82d1f..0000000 --- a/nfp_moe_old/app/admin.scss +++ /dev/null @@ -1,120 +0,0 @@ -@import './_common'; - -.error { - font-size: 0.8em; - color: $secondary-dark-bg; - font-weight: bold; - padding-bottom: 20px; -} - -$bordercolor: $primary-bg; -$headcolor: $primary-light-bg; -$headtext: $primary-light-fg; - -.admin-wrapper table { - width: calc(100% - 20px); - margin: 10px; - border: solid 1px $bordercolor; - border-collapse: collapse; - border-spacing: 0; - font-size: 0.8em; - position: relative; - - thead th { - background-color: $headcolor; - border: solid 1px $bordercolor; - color: $headtext; - padding: 10px; - text-align: left; - } - tbody td { - text-align: left; - border: solid 1px $bordercolor; - color: $table-fg; - padding: 10px; - } - a, - a:visited, - a:hover { - text-decoration: none; - color: $secondary-dark-bg; - font-weight: bold; - } - - button { - color: $secondary-dark-bg; - background: transparent; - border: 1px solid $secondary-dark-bg; - } - - td.right, - th.right { - text-align: right; - } -} - -.floating-container { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: #00000099; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -.input-group {} - -.input-row { - display: flex; - - & > * { - margin-right: 1rem; - flex: 2 1 auto; - } - - & > .small { - flex: 0 0 auto; - } - - & > *:last-child { - margin-right: 0; - } -} - -.admin-wrapper .loading-spinner { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: #00000066; - z-index: 1000; -} - -@import 'admin/admin'; -@import 'widgets/admin'; - -.codex-editor { - margin-bottom: 0.5rem; -} - -input[type=checkbox] { - display: block; - height: 20px; - margin: 0.5rem 0; - width: 20px; -} - -.darkmodeon { - .maincontainer .admin-wrapper { - color: $main-fg; - } - - .error { - color: $dark_secondary-dark-bg; - } -} diff --git a/nfp_moe_old/app/admin/admin.scss b/nfp_moe_old/app/admin/admin.scss deleted file mode 100644 index 188f6ac..0000000 --- a/nfp_moe_old/app/admin/admin.scss +++ /dev/null @@ -1,149 +0,0 @@ - -.admin-wrapper { - flex-grow: 2; - display: flex; - flex-direction: column; - background: $primary-bg; - padding: 0 20px 50px; -} - -.admin-actions { - background: $primary-bg; - display: flex; - justify-content: center; - min-height: 37px; - - span { - color: $primary-fg; - padding: 10px; - font-size: 14px; - font-weight: bold; - } - - a { - padding: 10px; - text-decoration: none; - color: $secondary-light-bg; - font-size: 14px; - font-weight: bold; - } -} - -.fr-box, -.fr-toolbar, -.fr-box .second-toolbar { - border-radius: 0 !important; -} - -@import 'pages'; -@import 'articles'; -@import 'staff'; - - -.date-selector-wrapper { - width: 200px; - padding: 3px; - background-color: #fff; - box-shadow: 1px 1px 10px 1px #5c5c5c; - position: absolute; - font-size: 12px; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - z-index: 10; - /* user-select: none; */ -} -.cal-header, .cal-row { - display: flex; - width: 100%; - height: 30px; - line-height: 30px; - text-align: center; -} -.cal-cell, .cal-nav { - cursor: pointer; -} -.cal-day-names { - height: 25px; - line-height: 25px; -} -.cal-day-names .cal-cell { - cursor: default; - font-weight: bold; -} -.cal-cell-prev, .cal-cell-next { - color: #777; -} -.cal-months .cal-row, .cal-years .cal-row { - height: 60px; - line-height: 60px; -} -.cal-nav-prev, .cal-nav-next { - flex: 0.15; -} -.cal-nav-current { - flex: 0.75; - font-weight: bold; -} -.cal-months .cal-cell, .cal-years .cal-cell { - flex: 0.25; -} -.cal-days .cal-cell { - flex: 0.143; -} -.cal-value { - color: #fff; - background-color: #286090; -} -.cal-cell:hover, .cal-nav:hover { - background-color: #eee; -} -.cal-value:hover { - background-color: #204d74; -} - -/* time footer */ -.cal-time { - display: flex; - justify-content: flex-start; - height: 27px; - line-height: 27px; -} -.cal-time-label, .cal-time-value { - flex: 0.12; - text-align: center; -} -.cal-time-slider { - flex: 0.77; - background-image: linear-gradient(to right, #d1d8dd, #d1d8dd); - background-repeat: no-repeat; - background-size: 100% 1px; - background-position: left 50%; - height: 100%; -} -.cal-time-slider input { - width: 100%; - -webkit-appearance: none; - background: 0 0; - cursor: pointer; - height: 100%; - outline: 0; - user-select: auto; -} - -.ce-block__content, -.ce-toolbar__content { max-width:calc(100% - 120px) !important; } -.cdx-block { max-width: 100% !important; } - -.codex-editor { - border: 1px solid var(--input-border); - background: var(--input-bg); - color: var(--input-fg); -} - -.codex-editor:hover, -.codex-editor:active { - border-color: var(--secondary-bg); -} diff --git a/nfp_moe_old/app/admin/articles.js b/nfp_moe_old/app/admin/articles.js deleted file mode 100644 index 2937f2d..0000000 --- a/nfp_moe_old/app/admin/articles.js +++ /dev/null @@ -1,162 +0,0 @@ -const Article = require('../api/article') -const pagination = require('../api/pagination') -const Dialogue = require('../widgets/dialogue') -const Pages = require('../widgets/pages') -const common = require('../api/common') - -const AdminArticles = { - oninit: function(vnode) { - this.error = '' - this.loading = false - this.showLoading = null - this.data = { - articles: [], - total_articles: 0, - } - this.removeArticle = null - this.currentPage = Number(m.route.param('page')) || 1 - - this.fetchArticles(vnode) - }, - - onbeforeupdate: function(vnode) { - this.currentPage = Number(m.route.param('page')) || 1 - - if (this.currentPage !== this.lastpage) { - this.fetchArticles(vnode) - } - }, - - fetchArticles: function(vnode) { - this.error = '' - this.lastpage = this.currentPage - - document.title = 'Articles Page ' + this.lastpage + ' - Admin NFP Moe' - - if (this.showLoading) { - clearTimeout(this.showLoading) - } - - if (this.data.articles.length) { - this.showLoading = setTimeout(() => { - this.showLoading = null - this.loading = true - m.redraw() - }, 150) - } else { - this.loading = true - } - - return common.sendRequest({ - method: 'GET', - url: '/api/auth/articles?page=' + (this.lastpage || 1), - }) - .then((result) => { - this.data = result - - this.data.articles.forEach((article) => { - article.hidden = new Date() < new Date(article.publish_at) - article.page_path = article.page_path ? '/page/' + article.page_path : '/' - article.page_name = article.page_name || 'Frontpage' - }) - }, (err) => { - this.error = err.message - }) - .then(() => { - clearTimeout(this.showLoading) - this.showLoading = null - this.loading = false - m.redraw() - }) - }, - - confirmRemoveArticle: function(vnode) { - let removingArticle = this.removeArticle - this.removeArticle = null - this.loading = true - m.redraw() - - return common.sendRequest({ - method: 'DELETE', - url: '/api/auth/articles/' + removingArticle.id, - }) - .then( - () => this.fetchArticles(vnode), - (err) => { - this.error = err.message - this.loading = false - m.redraw() - } - ) - }, - - drawArticle: function(vnode, article) { - return [ - m('tr', { - class: article.hidden - ? rowhidden - : article.is_featured - ? 'rowfeatured' - : '' - }, [ - m('td', m(m.route.Link, { href: '/admin/articles/' + article.id }, article.name)), - m('td', m(m.route.Link, { href: article.page_path }, article.page_name)), - m('td', m(m.route.Link, { href: '/article/' + article.path }, '/article/' + article.path)), - m('td.right', article.publish_at.replace('T', ' ').split('.')[0]), - m('td.right', article.admin_name), - m('td.right', m('button', { onclick: function() { vnode.state.removeArticle = article } }, 'Remove')), - ]), - ] - }, - - view: function(vnode) { - return [ - m('div.admin-wrapper', [ - m('div.admin-actions', [ - m('span', 'Actions:'), - m(m.route.Link, { href: '/admin/articles/add' }, 'Create new article'), - ]), - m('article.editarticle', [ - m('header', m('h1', 'All articles')), - m('div.error', { - hidden: !this.error, - onclick: function() { vnode.state.error = '' }, - }, this.error), - this.loading - ? m('div.loading-spinner.full') - : m('table', [ - m('thead', - m('tr', [ - m('th', 'Title'), - m('th', 'Page'), - m('th', 'Path'), - m('th.right', 'Publish'), - m('th.right', 'By'), - m('th.right', 'Actions'), - ]) - ), - m('tbody', this.data.articles.map((article) => this.drawArticle(vnode, article))), - ], - ), - /*m(Pages, { - base: '/admin/articles', - links: this.links, - }),*/ - ]), - ]), - m(Dialogue, { - hidden: vnode.state.removeArticle === null, - title: 'Delete ' + (vnode.state.removeArticle ? vnode.state.removeArticle.name : ''), - message: 'Are you sure you want to remove "' + (vnode.state.removeArticle ? vnode.state.removeArticle.name : '') + '" (' + (vnode.state.removeArticle ? vnode.state.removeArticle.path : '') + ')', - yes: 'Remove', - yesclass: 'alert', - no: 'Cancel', - noclass: 'cancel', - onyes: this.confirmRemoveArticle.bind(this, vnode), - onno: function() { vnode.state.removeArticle = null }, - }), - ] - }, -} - -module.exports = AdminArticles diff --git a/nfp_moe_old/app/admin/articles.scss b/nfp_moe_old/app/admin/articles.scss deleted file mode 100644 index f08320d..0000000 --- a/nfp_moe_old/app/admin/articles.scss +++ /dev/null @@ -1,131 +0,0 @@ - -article.editarticle { - background: white; - padding: 0 0 20px; - - header { - text-align: center; - padding: 10px; - background: $secondary-bg; - - h1 { - color: $secondary-fg; - } - - a { - font-size: 14px; - text-decoration: none; - margin-left: 10px; - color: $secondary-light-fg; - } - } - - fileupload { - margin: 0 0 20px; - - .inside { - height: 150px; - } - } - - fileupload.cover { - align-self: center; - min-width: 178px; - } - - form { - padding: 0 2rem 1rem; - - textarea { - height: 300px; - } - - label.slim { - font-size: 0.7em; - } - input.slim { - font-size: 0.8em; - padding: 2px 5px; - } - - .loading-spinner { - height: 300px; - position: relative; - } - - button.submit { - margin-left: 20px; - } - } - - table { - tr.rowhidden td { - background: #e6e6e6; - } - - tr.rowfeatured td { - background: hsl(120, 60%, 85%); - } - } - - h5 { - margin-bottom: 20px; - } - - & > .loading-spinner { - width: 240px; - height: 50px; - position: relative; - - &.full { - width: 100%; - } - } - - .fileupload { - align-self: flex-start; - padding: 0.5rem; - margin: 0.5rem 0 0.5rem 2rem; - min-width: 150px; - border: none; - border: 1px solid $secondary-bg; - background: $secondary-light-bg; - color: $secondary-light-fg; - position: relative; - text-align: center; - - input { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - opacity: 0.01; - width: 100%; - cursor: pointer; - text-indent: -9999px; - z-index: 2; - } - } - - files { - align-items: stretch; - width: 100%; - display: flex; - flex-direction: column; - padding: 1rem 2rem 0; - text-align: left; - - h4 { - font-size: 1.1em; - font-weight: bold; - padding: 0 5px 5px; - margin-bottom: 10px; - border-bottom: 1px solid $border; - } - } -} - -table span.subarticle { - padding: 0 5px; -} diff --git a/nfp_moe_old/app/admin/dtsel.js b/nfp_moe_old/app/admin/dtsel.js deleted file mode 100644 index b242949..0000000 --- a/nfp_moe_old/app/admin/dtsel.js +++ /dev/null @@ -1,950 +0,0 @@ -(function () { - "use strict"; - - var BODYTYPES = ["DAYS", "MONTHS", "YEARS"]; - - /** @typedef {Object.} Handlers */ - /** @typedef {function(String, Function): null} AddHandler */ - /** @typedef {("DAYS"|"MONTHS"|"YEARS")} BodyType */ - /** @typedef {string|number} StringNum */ - /** @typedef {Object.} StringNumObj */ - - /** - * The local state - * @typedef {Object} InstanceState - * @property {Date} value - * @property {Number} year - * @property {Number} month - * @property {Number} day - * @property {Number} time - * @property {Number} hours - * @property {Number} minutes - * @property {Number} seconds - * @property {BodyType} bodyType - * @property {Boolean} visible - * @property {Number} cancelBlur - */ - - /** - * @typedef {Object} Config - * @property {String} dateFormat - * @property {String} timeFormat - * @property {Boolean} showDate - * @property {Boolean} showTime - * @property {Boolean} showSeconds - * @property {Number} paddingX - * @property {Number} paddingY - * @property {BodyType} defaultView - * @property {"TOP"|"BOTTOM"} direction - * @property {Array} months - * @property {Array} monthsShort - * @property {Array} weekdaysShort - * @property {Array} timeDescr - */ - - /** - * @class - * @param {HTMLElement} elem - * @param {Config} config - */ - function DTS(elem, config) { - var config = config || {}; - - /** @type {Config} */ - var defaultConfig = { - defaultView: BODYTYPES[0], - dateFormat: "yyyy-mm-dd", - timeFormat: "HH:MM:SS", - showDate: true, - showTime: false, - showSeconds: true, - paddingX: 5, - paddingY: 5, - direction: 'TOP', - months: [ - "January", "February", "March", "April", "May", "June", - "July", "August", "September", "October", "November", "December" - ], - monthsShort: [ - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" - ], - weekdaysShort: [ - "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" - ], - timeDescr: [ - "HH:", "MM:", "SS:" - ] - } - - if (!elem) { - throw TypeError("input element or selector required for contructor"); - } - if (Object.getPrototypeOf(elem) === String.prototype) { - var _elem = document.querySelectorAll(elem); - if (!_elem[0]){ - throw Error('"' + elem + '" not found.'); - } - elem = _elem[0]; - } - this.config = setDefaults(config, defaultConfig); - this.dateFormat = this.config.dateFormat; - this.timeFormat = this.config.timeFormat; - this.dateFormatRegEx = new RegExp("yyyy|yy|mm|dd", "gi"); - this.timeFormatRegEx = new RegExp("hh|mm|ss|a", "gi"); - this.inputElem = elem; - this.dtbox = null; - this.setup(); - } - DTS.prototype.setup = function () { - var handler = this.inputElemHandler.bind(this); - this.inputElem.addEventListener("focus", handler, false) - this.inputElem.addEventListener("blur", handler, false); - } - DTS.prototype.inputElemHandler = function (e) { - if (e.type == "focus") { - if (!this.dtbox) { - this.dtbox = new DTBox(e.target, this); - } - this.dtbox.visible = true; - } else if (e.type == "blur" && this.dtbox && this.dtbox.visible) { - var self = this; - setTimeout(function () { - if (self.dtbox.cancelBlur > 0) { - self.dtbox.cancelBlur -= 1; - } else { - self.dtbox.visible = false; - self.inputElem.blur(); - } - }, 100); - } - } - /** - * @class - * @param {HTMLElement} elem - * @param {DTS} settings - */ - function DTBox(elem, settings) { - /** @type {DTBox} */ - var self = this; - - /** @type {Handlers} */ - var handlers = {}; - - /** @type {InstanceState} */ - var localState = {}; - - /** - * @param {String} key - * @param {*} default_val - */ - function getterSetter(key, default_val) { - return { - get: function () { - var val = localState[key]; - return val === undefined ? default_val : val; - }, - set: function (val) { - var prevState = self.state; - var _handlers = handlers[key] || []; - localState[key] = val; - for (var i = 0; i < _handlers.length; i++) { - _handlers[i].bind(self)(localState, prevState); - } - }, - }; - }; - - /** @type {AddHandler} */ - function addHandler(key, handlerFn) { - if (!key || !handlerFn) { - return false; - } - if (!handlers[key]) { - handlers[key] = []; - } - handlers[key].push(handlerFn); - } - - Object.defineProperties(this, { - visible: getterSetter("visible", false), - bodyType: getterSetter("bodyType", settings.config.defaultView), - value: getterSetter("value"), - year: getterSetter("year", 0), - month: getterSetter("month", 0), - day: getterSetter("day", 0), - hours: getterSetter("hours", 0), - minutes: getterSetter("minutes", 0), - seconds: getterSetter("seconds", 0), - cancelBlur: getterSetter("cancelBlur", 0), - addHandler: {value: addHandler}, - month_long: { - get: function () { - return self.settings.config.months[self.month]; - }, - }, - month_short: { - get: function () { - return self.settings.config.monthsShort[self.month] - }, - }, - state: { - get: function () { - return Object.assign({}, localState); - }, - }, - time: { - get: function() { - var hours = self.hours * 60 * 60 * 1000; - var minutes = self.minutes * 60 * 1000; - var seconds = self.seconds * 1000; - return hours + minutes + seconds; - } - }, - }); - this.el = {}; - this.settings = settings; - this.elem = elem; - this.setup(); - } - DTBox.prototype.setup = function () { - Object.defineProperties(this.el, { - wrapper: { value: null, configurable: true }, - header: { value: null, configurable: true }, - body: { value: null, configurable: true }, - footer: { value: null, configurable: true } - }); - this.setupWrapper(); - if (this.settings.config.showDate) { - this.setupHeader(); - this.setupBody(); - } - if (this.settings.config.showTime) { - this.setupFooter(); - } - - var self = this; - this.addHandler("visible", function (state, prevState) { - if (state.visible && !prevState.visible){ - document.body.appendChild(this.el.wrapper); - - var parts = self.elem.value.split(/\s*,\s*/); - var startDate = undefined; - var startTime = 0; - if (self.settings.config.showDate) { - startDate = parseDate(parts[0], self.settings); - } - if (self.settings.config.showTime) { - startTime = parseTime(parts[parts.length-1], self.settings); - startTime = startTime || 0; - } - if (!(startDate && startDate.getTime())) { - startDate = new Date(); - startDate = new Date( - startDate.getFullYear(), - startDate.getMonth(), - startDate.getDate() - ); - } - var value = new Date(startDate.getTime() + startTime); - self.value = value; - self.year = value.getFullYear(); - self.month = value.getMonth(); - self.day = value.getDate(); - self.hours = value.getHours(); - self.minutes = value.getMinutes(); - self.seconds = value.getSeconds(); - - if (self.settings.config.showDate) { - self.setHeaderContent(); - self.setBodyContent(); - } - if (self.settings.config.showTime) { - self.setFooterContent(); - } - } else if (!state.visible && prevState.visible) { - document.body.removeChild(this.el.wrapper); - } - }); - } - DTBox.prototype.setupWrapper = function () { - if (!this.el.wrapper) { - var el = document.createElement("div"); - el.classList.add("date-selector-wrapper"); - Object.defineProperty(this.el, "wrapper", { value: el }); - } - var self = this; - var htmlRoot = document.getElementsByTagName('html')[0]; - function setPosition(e){ - var minTopSpace = 300; - var box = getOffset(self.elem); - var config = self.settings.config; - var paddingY = config.paddingY || 5; - var paddingX = config.paddingX || 5; - var top = box.top + self.elem.offsetHeight + paddingY; - var left = box.left + paddingX; - var bottom = htmlRoot.clientHeight - box.top + paddingY; - - self.el.wrapper.style.left = `${left}px`; - if (box.top > minTopSpace && config.direction != 'BOTTOM') { - self.el.wrapper.style.bottom = `${bottom}px`; - self.el.wrapper.style.top = ''; - } else { - self.el.wrapper.style.top = `${top}px`; - self.el.wrapper.style.bottom = ''; - } - } - - function handler(e) { - self.cancelBlur += 1; - setTimeout(function(){ - self.elem.focus(); - }, 50); - } - setPosition(); - this.setPosition = setPosition; - this.el.wrapper.addEventListener("mousedown", handler, false); - this.el.wrapper.addEventListener("touchstart", handler, false); - window.addEventListener('resize', this.setPosition); - } - DTBox.prototype.setupHeader = function () { - if (!this.el.header) { - var row = document.createElement("div"); - var classes = ["cal-nav-prev", "cal-nav-current", "cal-nav-next"]; - row.classList.add("cal-header"); - for (var i = 0; i < 3; i++) { - var cell = document.createElement("div"); - cell.classList.add("cal-nav", classes[i]); - cell.onclick = this.onHeaderChange.bind(this); - row.appendChild(cell); - } - row.children[0].innerHTML = "<"; - row.children[2].innerHTML = ">"; - Object.defineProperty(this.el, "header", { value: row }); - tryAppendChild(row, this.el.wrapper); - } - this.setHeaderContent(); - } - DTBox.prototype.setHeaderContent = function () { - var content = this.year; - if ("DAYS" == this.bodyType) { - content = this.month_long + " " + content; - } else if ("YEARS" == this.bodyType) { - var start = this.year + 10 - (this.year % 10); - content = start - 10 + "-" + (start - 1); - } - this.el.header.children[1].innerText = content; - } - DTBox.prototype.setupBody = function () { - if (!this.el.body) { - var el = document.createElement("div"); - el.classList.add("cal-body"); - Object.defineProperty(this.el, "body", { value: el }); - tryAppendChild(el, this.el.wrapper); - } - var toAppend = null; - function makeGrid(rows, cols, className, firstRowClass, clickHandler) { - var grid = document.createElement("div"); - grid.classList.add(className); - for (var i = 1; i < rows + 1; i++) { - var row = document.createElement("div"); - row.classList.add("cal-row", "cal-row-" + i); - if (i == 1 && firstRowClass) { - row.classList.add(firstRowClass); - } - for (var j = 1; j < cols + 1; j++) { - var col = document.createElement("div"); - col.classList.add("cal-cell", "cal-col-" + j); - col.onclick = clickHandler; - row.appendChild(col); - } - grid.appendChild(row); - } - return grid; - } - if ("DAYS" == this.bodyType) { - toAppend = this.el.body.calDays; - if (!toAppend) { - toAppend = makeGrid(7, 7, "cal-days", "cal-day-names", this.onDateSelected.bind(this)); - for (var i = 0; i < 7; i++) { - var cell = toAppend.children[0].children[i]; - cell.innerText = this.settings.config.weekdaysShort[i]; - cell.onclick = null; - } - this.el.body.calDays = toAppend; - } - } else if ("MONTHS" == this.bodyType) { - toAppend = this.el.body.calMonths; - if (!toAppend) { - toAppend = makeGrid(3, 4, "cal-months", null, this.onMonthSelected.bind(this)); - for (var i = 0; i < 3; i++) { - for (var j = 0; j < 4; j++) { - var monthShort = this.settings.config.monthsShort[4 * i + j]; - toAppend.children[i].children[j].innerText = monthShort; - } - } - this.el.body.calMonths = toAppend; - } - } else if ("YEARS" == this.bodyType) { - toAppend = this.el.body.calYears; - if (!toAppend) { - toAppend = makeGrid(3, 4, "cal-years", null, this.onYearSelected.bind(this)); - this.el.body.calYears = toAppend; - } - } - empty(this.el.body); - tryAppendChild(toAppend, this.el.body); - this.setBodyContent(); - } - DTBox.prototype.setBodyContent = function () { - var grid = this.el.body.children[0]; - var classes = ["cal-cell-prev", "cal-cell-next", "cal-value"]; - if ("DAYS" == this.bodyType) { - var oneDayMilliSecs = 24 * 60 * 60 * 1000; - var start = new Date(this.year, this.month, 1); - var adjusted = new Date(start.getTime() - oneDayMilliSecs * start.getDay()); - - grid.children[6].style.display = ""; - for (var i = 1; i < 7; i++) { - for (var j = 0; j < 7; j++) { - var cell = grid.children[i].children[j]; - var month = adjusted.getMonth(); - var date = adjusted.getDate(); - - cell.innerText = date; - cell.classList.remove(classes[0], classes[1], classes[2]); - if (month != this.month) { - if (i == 6 && j == 0) { - grid.children[6].style.display = "none"; - break; - } - cell.classList.add(month < this.month ? classes[0] : classes[1]); - } else if (isEqualDate(adjusted, this.value)){ - cell.classList.add(classes[2]); - } - adjusted = new Date(adjusted.getTime() + oneDayMilliSecs); - } - } - } else if ("YEARS" == this.bodyType) { - var year = this.year - (this.year % 10) - 1; - for (i = 0; i < 3; i++) { - for (j = 0; j < 4; j++) { - grid.children[i].children[j].innerText = year; - year += 1; - } - } - grid.children[0].children[0].classList.add(classes[0]); - grid.children[2].children[3].classList.add(classes[1]); - } - } - - /** @param {Event} e */ - DTBox.prototype.onTimeChange = function(e) { - e.stopPropagation(); - if (e.type == 'mousedown') { - this.cancelBlur += 1; - return; - } - if (e.type == 'mouseup') { - var self = this; - setTimeout(function(){ - self.elem.focus(); - }, 50); - return; - } - - var el = e.target; - this[el.name] = parseInt(el.value) || 0; - this.setupFooter(); - this.setInputValue(); - } - - DTBox.prototype.setupFooter = function() { - if (!this.el.footer) { - var footer = document.createElement("div"); - var handler = this.onTimeChange.bind(this); - var self = this; - - function makeRow(label, name, range, changeHandler) { - var row = document.createElement("div"); - row.classList.add('cal-time'); - - var labelCol = row.appendChild(document.createElement("div")); - labelCol.classList.add('cal-time-label'); - labelCol.innerText = label; - - var valueCol = row.appendChild(document.createElement("div")); - valueCol.classList.add('cal-time-value'); - valueCol.innerText = '00'; - - var inputCol = row.appendChild(document.createElement("div")); - var slider = inputCol.appendChild(document.createElement("input")); - Object.assign(slider, {step:1, min:0, max:range, name:name, type:'range'}); - Object.defineProperty(footer, name, {value: slider}); - inputCol.classList.add('cal-time-slider'); - slider.onchange = changeHandler; - slider.oninput = changeHandler; - slider.onmousedown = changeHandler; - slider.onmouseup = changeHandler; - self[name] = self[name] || parseInt(slider.value) || 0; - footer.appendChild(row) - } - makeRow(this.settings.config.timeDescr[0], 'hours', 23, handler); - makeRow(this.settings.config.timeDescr[1], 'minutes', 59, handler); - if (this.settings.config.showSeconds) { - makeRow(this.settings.config.timeDescr[2], 'seconds', 59, handler); - } - - footer.classList.add("cal-footer"); - Object.defineProperty(this.el, "footer", { value: footer }); - tryAppendChild(footer, this.el.wrapper); - } - this.setFooterContent(); - } - - DTBox.prototype.setFooterContent = function() { - if (this.el.footer) { - var footer = this.el.footer; - footer.hours.value = this.hours; - footer.children[0].children[1].innerText = padded(this.hours, 2); - footer.minutes.value = this.minutes; - footer.children[1].children[1].innerText = padded(this.minutes, 2); - if (this.settings.config.showSeconds) { - footer.seconds.value = this.seconds; - footer.children[2].children[1].innerText = padded(this.seconds, 2); - } - } - } - - DTBox.prototype.setInputValue = function() { - var date = new Date(this.year, this.month, this.day); - var strings = []; - if (this.settings.config.showDate) { - strings.push(renderDate(date, this.settings)); - } - if (this.settings.config.showTime) { - var joined = new Date(date.getTime() + this.time); - strings.push(renderTime(joined, this.settings)); - } - this.elem.value = strings.join(', '); - } - - DTBox.prototype.onDateSelected = function (e) { - var row = e.target.parentNode; - var date = parseInt(e.target.innerText); - if (!(row.nextSibling && row.nextSibling.nextSibling) && date < 8) { - this.month += 1; - } else if (!(row.previousSibling && row.previousSibling.previousSibling) && date > 7) { - this.month -= 1; - } - this.day = parseInt(e.target.innerText); - this.value = new Date(this.year, this.month, this.day); - this.setInputValue(); - this.setHeaderContent(); - this.setBodyContent(); - } - - /** @param {Event} e */ - DTBox.prototype.onMonthSelected = function (e) { - var col = 0; - var row = 2; - var cell = e.target; - if (cell.parentNode.nextSibling){ - row = cell.parentNode.previousSibling ? 1: 0; - } - if (cell.previousSibling) { - col = 3; - if (cell.nextSibling) { - col = cell.previousSibling.previousSibling ? 2 : 1; - } - } - this.month = 4 * row + col; - this.bodyType = "DAYS"; - this.setHeaderContent(); - this.setupBody(); - } - - /** @param {Event} e */ - DTBox.prototype.onYearSelected = function (e) { - this.year = parseInt(e.target.innerText); - this.bodyType = "MONTHS"; - this.setHeaderContent(); - this.setupBody(); - } - - /** @param {Event} e */ - DTBox.prototype.onHeaderChange = function (e) { - var cell = e.target; - if (cell.previousSibling && cell.nextSibling) { - var idx = BODYTYPES.indexOf(this.bodyType); - if (idx < 0 || !BODYTYPES[idx + 1]) { - return; - } - this.bodyType = BODYTYPES[idx + 1]; - this.setupBody(); - } else { - var sign = cell.previousSibling ? 1 : -1; - switch (this.bodyType) { - case "DAYS": - this.month += sign * 1; - break; - case "MONTHS": - this.year += sign * 1; - break; - case "YEARS": - this.year += sign * 10; - } - if (this.month > 11 || this.month < 0) { - this.year += Math.floor(this.month / 11); - this.month = this.month > 11 ? 0 : 11; - } - } - this.setHeaderContent(); - this.setBodyContent(); - } - - - /** - * @param {HTMLElement} elem - * @returns {{left:number, top:number}} - */ - function getOffset(elem) { - var box = elem.getBoundingClientRect(); - var left = window.pageXOffset !== undefined ? window.pageXOffset : - (document.documentElement || document.body.parentNode || document.body).scrollLeft; - var top = window.pageYOffset !== undefined ? window.pageYOffset : - (document.documentElement || document.body.parentNode || document.body).scrollTop; - return { left: box.left + left, top: box.top + top }; - } - function empty(e) { - for (; e.children.length; ) e.removeChild(e.children[0]); - } - function tryAppendChild(newChild, refNode) { - try { - refNode.appendChild(newChild); - return newChild; - } catch (e) { - console.trace(e); - } - } - - /** @class */ - function hookFuncs() { - /** @type {Handlers} */ - this._funcs = {}; - } - /** - * @param {string} key - * @param {Function} func - */ - hookFuncs.prototype.add = function(key, func){ - if (!this._funcs[key]){ - this._funcs[key] = []; - } - this._funcs[key].push(func) - } - /** - * @param {String} key - * @returns {Function[]} handlers - */ - hookFuncs.prototype.get = function(key){ - return this._funcs[key] ? this._funcs[key] : []; - } - - /** - * @param {Array.} arr - * @param {String} string - * @returns {Array.} sorted string - */ - function sortByStringIndex(arr, string) { - return arr.sort(function(a, b){ - var h = string.indexOf(a); - var l = string.indexOf(b); - var rank = 0; - if (h < l) { - rank = -1; - } else if (l < h) { - rank = 1; - } else if (a.length > b.length) { - rank = -1; - } else if (b.length > a.length) { - rank = 1; - } - return rank; - }); - } - - /** - * Remove keys from array that are not in format - * @param {string[]} keys - * @param {string} format - * @returns {string[]} new filtered array - */ - function filterFormatKeys(keys, format) { - var out = []; - var formatIdx = 0; - for (var i = 0; i -1) { - formatIdx += key.length; - out.push(key); - } - } - return out; - } - - /** - * @template {StringNumObj} FormatObj - * @param {string} value - * @param {string} format - * @param {FormatObj} formatObj - * @param {function(Object.): null} setHooks - * @returns {FormatObj} formatObj - */ - function parseData(value, format, formatObj, setHooks) { - var hooks = { - canSkip: new hookFuncs(), - updateValue: new hookFuncs(), - } - var keys = sortByStringIndex(Object.keys(formatObj), format); - var filterdKeys = filterFormatKeys(keys, format); - var vstart = 0; // value start - if (setHooks) { - setHooks(hooks); - } - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var fstart = format.indexOf(key); - var _vstart = vstart; // next value start - var val = null; - var canSkip = false; - var funcs = hooks.canSkip.get(key); - - vstart = vstart || fstart; - - for (var j = 0; j < funcs.length; j++) { - if (funcs[j](formatObj)){ - canSkip = true; - break; - } - } - if (fstart > -1 && !canSkip) { - var sep = null; - var stop = vstart + key.length; - var fnext = -1; - var nextKeyIdx = i + 1; - _vstart += key.length; // set next value start if current key is found - - // get next format token used to determine separator - while (fnext == -1 && nextKeyIdx < keys.length){ - var nextKey = keys[nextKeyIdx]; - nextKeyIdx += 1; - if (filterdKeys.indexOf(nextKey) === -1) { - continue; - } - fnext = nextKey ? format.indexOf(nextKey) : -1; // next format start - } - if (fnext > -1){ - sep = format.slice(stop, fnext); - if (sep) { - var _stop = value.slice(vstart).indexOf(sep); - if (_stop && _stop > -1){ - stop = _stop + vstart; - _vstart = stop + sep.length; - } - } - } - val = parseInt(value.slice(vstart, stop)); - - var funcs = hooks.updateValue.get(key); - for (var k = 0; k < funcs.length; k++) { - val = funcs[k](val, formatObj, vstart, stop); - } - } - formatObj[key] = { index: vstart, value: val }; - vstart = _vstart; // set next value start - } - return formatObj; - } - - /** - * @param {String} value - * @param {DTS} settings - * @returns {Date} date object - */ - function parseDate(value, settings) { - /** @type {{yyyy:number=, yy:number=, mm:number=, dd:number=}} */ - var formatObj = {yyyy:null, yy:null, mm:null, dd:null}; - var format = ((settings.dateFormat) || '').toLowerCase(); - if (!format) { - throw new TypeError('dateFormat not found (' + settings.dateFormat + ')'); - } - var formatObj = parseData(value, format, formatObj, function(hooks){ - hooks.canSkip.add("yy", function(data){ - return data["yyyy"].value; - }); - hooks.updateValue.add("yy", function(val){ - return 100 * Math.floor(new Date().getFullYear() / 100) + val; - }); - }); - var year = formatObj["yyyy"].value || formatObj["yy"].value; - var month = formatObj["mm"].value - 1; - var date = formatObj["dd"].value; - var result = new Date(year, month, date); - return result; - } - - /** - * @param {String} value - * @param {DTS} settings - * @returns {Number} time in milliseconds <= (24 * 60 * 60 * 1000) - 1 - */ - function parseTime(value, settings) { - var format = ((settings.timeFormat) || '').toLowerCase(); - if (!format) { - throw new TypeError('timeFormat not found (' + settings.timeFormat + ')'); - } - - /** @type {{hh:number=, mm:number=, ss:number=, a:string=}} */ - var formatObj = {hh:null, mm:null, ss:null, a:null}; - var formatObj = parseData(value, format, formatObj, function(hooks){ - hooks.updateValue.add("a", function(val, data, start, stop){ - return value.slice(start, start + 2); - }); - }); - var hours = formatObj["hh"].value; - var minutes = formatObj["mm"].value; - var seconds = formatObj["ss"].value; - var am_pm = formatObj["a"].value; - var am_pm_lower = am_pm ? am_pm.toLowerCase() : am_pm; - if (am_pm && ["am", "pm"].indexOf(am_pm_lower) > -1){ - if (am_pm_lower == 'am' && hours == 12){ - hours = 0; - } else if (am_pm_lower == 'pm') { - hours += 12; - } - } - var time = hours * 60 * 60 * 1000 + minutes * 60 * 1000 + seconds * 1000; - return time; - } - - /** - * @param {Date} value - * @param {DTS} settings - * @returns {String} date string - */ - function renderDate(value, settings) { - var format = settings.dateFormat.toLowerCase(); - var date = value.getDate(); - var month = value.getMonth() + 1; - var year = value.getFullYear(); - var yearShort = year % 100; - var formatObj = { - dd: date < 10 ? "0" + date : date, - mm: month < 10 ? "0" + month : month, - yyyy: year, - yy: yearShort < 10 ? "0" + yearShort : yearShort - }; - var str = format.replace(settings.dateFormatRegEx, function (found) { - return formatObj[found]; - }); - return str; - } - - /** - * @param {Date} value - * @param {DTS} settings - * @returns {String} date string - */ - function renderTime(value, settings) { - var Format = settings.timeFormat; - var format = Format.toLowerCase(); - var hours = value.getHours(); - var minutes = value.getMinutes(); - var seconds = value.getSeconds(); - var am_pm = null; - var hh_am_pm = null; - if (format.indexOf('a') > -1) { - am_pm = hours >= 12 ? 'pm' : 'am'; - am_pm = Format.indexOf('A') > -1 ? am_pm.toUpperCase() : am_pm; - hh_am_pm = hours == 0 ? '12' : (hours > 12 ? hours%12 : hours); - } - var formatObj = { - hh: am_pm ? hh_am_pm : (hours < 10 ? "0" + hours : hours), - mm: minutes < 10 ? "0" + minutes : minutes, - ss: seconds < 10 ? "0" + seconds : seconds, - a: am_pm, - }; - var str = format.replace(settings.timeFormatRegEx, function (found) { - return formatObj[found]; - }); - return str; - } - - /** - * checks if two dates are equal - * @param {Date} date1 - * @param {Date} date2 - * @returns {Boolean} true or false - */ - function isEqualDate(date1, date2) { - if (!(date1 && date2)) return false; - return (date1.getFullYear() == date2.getFullYear() && - date1.getMonth() == date2.getMonth() && - date1.getDate() == date2.getDate()); - } - - /** - * @param {Number} val - * @param {Number} pad - * @param {*} default_val - * @returns {String} padded string - */ - function padded(val, pad, default_val) { - var default_val = default_val || 0; - var valStr = '' + (parseInt(val) || default_val); - var diff = Math.max(pad, valStr.length) - valStr.length; - return ('' + default_val).repeat(diff) + valStr; - } - - /** - * @template X - * @template Y - * @param {X} obj - * @param {Y} objDefaults - * @returns {X|Y} merged object - */ - function setDefaults(obj, objDefaults) { - var keys = Object.keys(objDefaults); - for (var i=0; i { - this.showLoading = null - this.loading = true - m.redraw() - }, 150) - } else { - this.loading = true - } - - data - .then((result) => { - this.data = result - this.data.article.publish_at = new Date(this.data.article.publish_at) - - if (this.data.article.id) { - document.title = 'Editing: ' + this.data.article.name + ' - Admin NFP Moe' - this.editedPath = true - } else { - document.title = 'Create Article - Admin NFP Moe' - } - }, (err) => { - this.error = err.message - }) - .then(() => { - clearTimeout(this.showLoading) - this.showLoading = null - this.loading = false - m.redraw() - }) - }, - - updateValue: function(name, e) { - if (name === 'is_featured') { - this.data.article[name] = e.currentTarget.checked - } else { - this.data.article[name] = e.currentTarget.value - } - if (name === 'path') { - this.editedPath = true - } else if (name === 'name' && !this.editedPath) { - this.data.article.path = this.data.article.name.toLowerCase().replace(/ /g, '-') - } - }, - - updateParent: function(e) { - this.data.article.page_id = Number(e.currentTarget.value) || null - }, - - updateStaffer: function(e) { - this.data.article.admin_id = Number(e.currentTarget.value) - }, - - mediaUploaded: function(type, file) { - if (type === 'banner') { - this.newBanner = file - } else { - this.newMedia = file - } - }, - - mediaRemoved: function(type) { - this.data.article['remove_' + type] = true - this.data.article[type + '_prefix'] = null - }, - - save: function(vnode, e) { - e.preventDefault() - if (!this.data.article.name) { - this.error = 'Name is missing' - } else if (!this.data.article.path) { - this.error = 'Path is missing' - } else { - this.error = '' - } - if (this.error) return - - let formData = new FormData() - if (this.newBanner) { - formData.append('banner', this.newBanner.file) - } - if (this.newMedia) { - formData.append('media', this.newMedia.file) - } - if (this.data.article.id) { - formData.append('id', this.data.article.id) - } - - formData.append('admin_id', this.data.article.admin_id || this.data.staff[0].id) - formData.append('name', this.data.article.name) - formData.append('is_featured', this.data.article.is_featured || false) - formData.append('path', this.data.article.path) - formData.append('page_id', this.data.article.page_id || null) - formData.append('publish_at', this.dateInstance.inputElem.value.replace(', ', 'T') + 'Z') - formData.append('remove_banner', this.data.article.remove_banner ? true : false) - formData.append('remove_media', this.data.article.remove_media ? true : false) - - this.loading = true - - this.requestArticle( - this.editor.save() - .then(body => { - formData.append('content', JSON.stringify(body)) - - return common.sendRequest({ - method: 'PUT', - url: '/api/auth/articles/' + (this.lastid === 'add' ? '0' : this.lastid), - body: formData, - }) - }) - .then(data => { - if (!data.article.id) { - throw new Error('Something went wrong with saving, try again later') - } else if (this.lastid === 'add') { - this.lastid = data.article.id.toString() - m.route.set('/admin/articles/' + data.article.id) - } - return data - }) - ) - }, - - uploadFile: function(vnode, e) { - - }, - - view: function(vnode) { - const showPublish = this.data.article - ? this.data.article.publish_at > new Date() - : false - const bannerImage = this.data.article && this.data.article.banner_prefix - ? this.data.article.banner_prefix + '_large.avif' - : null - const mediaImage = this.data.article && this.data.article.media_prefix - ? this.data.article.media_prefix + '_large.avif' - : null - - return [ - this.loading && !this.data.article - ? m('div.admin-spinner.loading-spinner') - : null, - this.data.article - ? m('div.admin-wrapper', [ - this.loading - ? m('div.loading-spinner') - : null, - m('div.admin-actions', this.data.article.id - ? [ - m('span', 'Actions:'), - m(m.route.Link, { href: '/article/' + this.data.article.path }, 'View article'), - ] - : null), - m('article.editarticle', [ - m('header', m('h1', - (this.data.article.id ? 'Edit ' : 'Create Article ') + (this.data.article.name || '(untitled)') - ) - ), - m('header', m('h1', this.creating ? 'Create Article' : 'Edit ' + (this.data.article.name || '(untitled)'))), - m('div.error', { - hidden: !this.error, - onclick: () => { vnode.state.error = '' }, - }, this.error), - m(FileUpload, { - height: 300, - onfile: this.mediaUploaded.bind(this, 'banner'), - ondelete: this.mediaRemoved.bind(this, 'banner'), - media: bannerImage, - }), - m(FileUpload, { - class: 'cover', - useimg: true, - onfile: this.mediaUploaded.bind(this, 'media'), - ondelete: this.mediaRemoved.bind(this, 'media'), - media: mediaImage, - }), - m('form.editarticle.content', { - onsubmit: this.save.bind(this, vnode), - }, [ - m('label', 'Parent'), - m('select', { - onchange: this.updateParent.bind(this), - }, this.pages.map((item) => { - return m('option', { - value: item.id || 0, - selected: item.id === this.data.article.page_id - }, item.name) - })), - m('div.input-row', [ - m('div.input-group', [ - m('label', 'Name'), - m('input', { - type: 'text', - value: this.data.article.name, - oninput: this.updateValue.bind(this, 'name'), - }), - ]), - m('div.input-group', [ - m('label', 'Path'), - m('input', { - type: 'text', - value: this.data.article.path, - oninput: this.updateValue.bind(this, 'path'), - }), - ]), - ]), - m('label', 'Description'), - m(Editor, { - oncreate: (subnode) => { - this.editor = subnode.state.editor - }, - contentdata: this.data.article.content, - }), - m('div.input-row', [ - m('div.input-group', [ - m('label', 'Published at'), - m('input', { - type: 'text', - oncreate: (div) => { - if (!this.dateInstance) { - this.dateInstance = new dtsel.DTS(div.dom, { - dateFormat: 'yyyy-mm-dd', - timeFormat: 'HH:MM:SS', - showTime: true, - }) - window.temp = this.dateInstance - } - }, - value: this.data.article.publish_at.toISOString().replace('T', ', ').split('.')[0], - }), - ]), - m('div.input-group', [ - m('label', 'Published by'), - m('select', { - onchange: this.updateStaffer.bind(this), - }, - this.data.staff.map((item) => { - return m('option', { - value: item.id, - selected: item.id === this.data.article.admin_id - }, item.name) - }) - ), - ]), - m('div.input-group.small', [ - m('label', 'Make featured'), - m('input', { - type: 'checkbox', - checked: this.data.article.is_featured, - oninput: this.updateValue.bind(this, 'is_featured'), - }), - ]), - ]), - m('div', { - hidden: !this.data.article.name || !this.data.article.path - }, [ - m('input', { - type: 'submit', - value: 'Save', - }), - showPublish - ? m('button.submit', { - onclick: () => { - this.data.article.publish_at = new Date().toISOString() - } - }, 'Publish') - : null, - ]), - ]), - this.data.files.length - ? m('files', [ - m('h4', 'Files'), - this.data.files.map((file) => { - return m(Fileinfo, { file: file }) - }), - ]) - : null, - this.data.article.id - ? m('div.fileupload', [ - 'Add file', - m('input', { - accept: '*', - type: 'file', - onchange: this.uploadFile.bind(this, vnode), - }), - (vnode.state.loadingFile ? m('div.loading-spinner') : null), - ]) - : null, - ]), - ]) - : m('div.error', { - hidden: !this.error, - onclick: () => { this.fetchArticle(vnode) }, - }, this.error),, - ] - }, -} - -module.exports = EditArticle diff --git a/nfp_moe_old/app/admin/editor.js b/nfp_moe_old/app/admin/editor.js deleted file mode 100644 index 0135c4d..0000000 --- a/nfp_moe_old/app/admin/editor.js +++ /dev/null @@ -1,47 +0,0 @@ -const Editor = { - oninit: function(vnode) { - this.editor = null - this.lastData = null - }, - - oncreate: function(vnode) { - this.editor = new window.EditorJS({ - holder: vnode.dom, - inlineToolbar: ['link', 'bold', 'inlineCode', 'italic'], - tools: { - inlineCode: { - class: window.InlineCode, // - shortcut: 'CMD+SHIFT+M', - }, - header: window.Header, - image: window.SimpleImage, - quote: window.Quote, - code: window.CodeTool, - list: { - class: window.List, - inlineToolbar: true, - config: { - defaultStyle: 'unordered' - } - }, - delimiter: window.Delimiter, - htmlraw: window.RawTool, - }, - data: vnode.attrs.contentdata, - }) - this.lastData = vnode.attrs.contentdata - }, - - onupdate: function(vnode) { - if (this.lastData !== vnode.attrs.contentdata) { - this.lastData = vnode.attrs.contentdata - this.editor.render(this.lastData) - } - }, - - view: function(vnode) { - return m('div') - } -} - -module.exports = Editor diff --git a/nfp_moe_old/app/admin/editpage.js b/nfp_moe_old/app/admin/editpage.js deleted file mode 100644 index b2d39ec..0000000 --- a/nfp_moe_old/app/admin/editpage.js +++ /dev/null @@ -1,262 +0,0 @@ -const FileUpload = require('../widgets/fileupload') -const Page = require('../api/page.p') - -const common = require('../api/common') -const Editor = require('./editor') - -const EditPage = { - oninit: function(vnode) { - this.loading = false - this.showLoading = null - this.data = { - page: null, - } - this.pages = [{id: null, name: 'Frontpage'}] - this.pages = this.pages.concat(Page.getFlatTree()) - - this.newBanner = null - this.newMedia = null - this.editor = null - - this.fetchPage(vnode) - }, - - onbeforeupdate: function(vnode) { - if (this.lastid !== m.route.param('id')) { - this.fetchPage(vnode) - } - }, - - fetchPage: function(vnode) { - this.lastid = m.route.param('id') - - return this.requestPage( - common.sendRequest({ - method: 'GET', - url: '/api/auth/pages/' + (this.lastid === 'add' ? '0' : this.lastid), - })) - }, - - requestPage: function(data) { - this.error = '' - - if (this.showLoading) { - clearTimeout(this.showLoading) - } - - if (this.data.page) { - this.showLoading = setTimeout(() => { - this.showLoading = null - this.loading = true - m.redraw() - }, 150) - } else { - this.loading = true - } - - data - .then((result) => { - this.data = result - if (this.data.page.id) { - document.title = 'Editing: ' + this.data.page.name + ' - Admin NFP Moe' - this.editedPath = true - } else { - document.title = 'Create Page - Admin NFP Moe' - } - }, (err) => { - this.error = err.message - }) - .then(() => { - clearTimeout(this.showLoading) - this.showLoading = null - this.loading = false - m.redraw() - }) - }, - - updateValue: function(name, e) { - this.data.page[name] = e.currentTarget.value - if (name === 'path') { - this.editedPath = true - } else if (name === 'name' && !this.editedPath) { - this.data.page.path = this.data.page.name.toLowerCase().replace(/ /g, '-') - } - }, - - updateParent: function(e) { - this.data.page.parent_id = Number(e.currentTarget.value) || null - }, - - mediaUploaded: function(type, file) { - if (type === 'banner') { - this.newBanner = file - } else { - this.newMedia = file - } - }, - - mediaRemoved: function(type) { - this.data.page['remove_' + type] = true - this.data.page[type + '_prefix'] = null - }, - - save: function(vnode, e) { - e.preventDefault() - if (!this.data.page.name) { - this.error = 'Name is missing' - } else if (!this.data.page.path) { - this.error = 'Path is missing' - } else { - this.error = '' - } - if (this.error) return - - let formData = new FormData() - if (this.newBanner) { - formData.append('banner', this.newBanner.file) - } - if (this.newMedia) { - formData.append('media', this.newMedia.file) - } - if (this.data.page.id) { - formData.append('id', this.data.page.id) - } - - formData.append('name', this.data.page.name) - formData.append('parent_id', this.data.page.parent_id || null) - formData.append('path', this.data.page.path) - formData.append('remove_banner', this.data.page.remove_banner ? true : false) - formData.append('remove_media', this.data.page.remove_media ? true : false) - - this.loading = true - - this.requestPage( - this.editor.save() - .then(body => { - formData.append('content', JSON.stringify(body)) - - return common.sendRequest({ - method: 'PUT', - url: '/api/auth/pages/' + (this.lastid === 'add' ? '0' : this.lastid), - body: formData, - }) - }) - .then(data => { - if (!data.page.id) { - throw new Error('Something went wrong with saving, try again later') - } else if (this.lastid === 'add') { - this.lastid = data.page.id.toString() - m.route.set('/admin/pages/' + data.page.id) - } - return Page.refreshTree().then(() => { - this.pages = [{id: null, name: 'Frontpage'}] - this.pages = this.pages.concat(Page.getFlatTree()) - - return data - }) - }) - ) - }, - - view: function(vnode) { - const bannerImage = this.data.page && this.data.page.banner_prefix - ? this.data.page.banner_prefix + '_large.avif' - : null - const mediaImage = this.data.page && this.data.page.media_prefix - ? this.data.page.media_prefix + '_large.avif' - : null - - return [ - this.loading && !this.data.page - ? m('div.admin-spinner.loading-spinner') - : null, - this.data.page - ? m('div.admin-wrapper', [ - this.loading - ? m('div.loading-spinner') - : null, - m('div.admin-actions', this.data.page.id - ? [ - m('span', 'Actions:'), - m(m.route.Link, { href: '/page/' + this.data.page.path }, 'View page'), - ] - : null), - m('article.editarticle', [ - m('header', m('h1', - (this.data.page.id ? 'Edit ' : 'Create Page ') + (this.data.page.name || '(untitled)') - ) - ), - m('div.error', { - hidden: !this.error, - onclick: () => { vnode.state.error = '' }, - }, this.error), - m(FileUpload, { - height: 300, - onfile: this.mediaUploaded.bind(this, 'banner'), - ondelete: this.mediaRemoved.bind(this, 'banner'), - media: bannerImage, - }), - m(FileUpload, { - class: 'cover', - useimg: true, - onfile: this.mediaUploaded.bind(this, 'media'), - ondelete: this.mediaRemoved.bind(this, 'media'), - media: mediaImage, - }), - m('form.editarticle.content', { - onsubmit: this.save.bind(this, vnode), - }, [ - m('label', 'Parent'), - m('select', { - onchange: this.updateParent.bind(this), - }, this.pages.filter(item => !this.data.page || item.id !== this.data.page.id).map((item) => { - return m('option', { - value: item.id || 0, - selected: item.id === this.data.page.parent_id - }, item.name) - })), - m('div.input-row', [ - m('div.input-group', [ - m('label', 'Name'), - m('input', { - type: 'text', - value: this.data.page.name, - oninput: this.updateValue.bind(this, 'name'), - }), - ]), - m('div.input-group', [ - m('label', 'Path'), - m('input', { - type: 'text', - value: this.data.page.path, - oninput: this.updateValue.bind(this, 'path'), - }), - ]), - ]), - m('label', 'Description'), - m(Editor, { - oncreate: (subnode) => { - this.editor = subnode.state.editor - }, - contentdata: this.data.page.content, - }), - m('div', { - hidden: !this.data.page.name || !this.data.page.path - }, [ - m('input', { - type: 'submit', - value: 'Save', - }), - ]), - ]), - ]), - ]) - : m('div.error', { - hidden: !this.error, - onclick: () => { this.fetchPage(vnode) }, - }, this.error),, - ] - }, -} - -module.exports = EditPage diff --git a/nfp_moe_old/app/admin/editstaff.js b/nfp_moe_old/app/admin/editstaff.js deleted file mode 100644 index 2340421..0000000 --- a/nfp_moe_old/app/admin/editstaff.js +++ /dev/null @@ -1,152 +0,0 @@ -const Staff = require('../api/staff') - -const EditStaff = { - oninit: function(vnode) { - this.fetchStaff(vnode) - }, - - onupdate: function(vnode) { - if (this.lastid !== m.route.param('id')) { - this.fetchStaff(vnode) - } - }, - - fetchStaff: function(vnode) { - this.lastid = m.route.param('id') - this.loading = this.lastid !== 'add' - this.creating = this.lastid === 'add' - this.error = '' - this.staff = { - name: '', - email: '', - password: '', - rank: 10, - } - - if (this.lastid !== 'add') { - Staff.getStaff(this.lastid) - .then(function(result) { - vnode.state.editedPath = true - vnode.state.staff = result - document.title = 'Editing: ' + result.name + ' - Admin NFP Moe' - }) - .catch(function(err) { - vnode.state.error = err.message - }) - .then(function() { - vnode.state.loading = false - m.redraw() - }) - } else { - document.title = 'Creating Staff Member - Admin NFP Moe' - } - }, - - updateValue: function(key, e) { - this.staff[key] = e.currentTarget.value - }, - - save: function(vnode, e) { - e.preventDefault() - if (!this.staff.name) { - this.error = 'Fullname is missing' - } else if (!this.staff.email) { - this.error = 'Email is missing' - } else { - this.error = '' - } - if (this.error) return - - this.staff.description = vnode.state.froala && vnode.state.froala.html.get() || this.staff.description - - this.loading = true - - let promise - - if (this.staff.id) { - promise = Staff.updateStaff(this.staff.id, { - name: this.staff.name, - email: this.staff.email, - rank: this.staff.rank, - password: this.staff.password, - }) - } else { - promise = Staff.createStaff({ - name: this.staff.name, - email: this.staff.email, - rank: this.staff.rank, - password: this.staff.password, - }) - } - - promise.then(function(res) { - m.route.set('/admin/staff') - }) - .catch(function(err) { - vnode.state.error = err.message - }) - .then(function() { - vnode.state.loading = false - m.redraw() - }) - }, - - updateLevel: function(e) { - this.staff.rank = Number(e.currentTarget.value) - }, - - view: function(vnode) { - const ranks = [[10, 'Manager'], [100, 'Admin']] - return ( - this.loading ? - m('div.loading-spinner') - : m('div.admin-wrapper', [ - m('div.admin-actions', this.staff.id - ? [ - m('span', 'Actions:'), - m(m.route.Link, { href: '/admin/staff' }, 'Staff list'), - ] - : null), - m('article.editstaff', [ - m('header', m('h1', this.creating ? 'Create Staff' : 'Edit ' + (this.staff.name || '(untitled)'))), - m('div.error', { - hidden: !this.error, - onclick: function() { vnode.state.error = '' }, - }, this.error), - m('form.editstaff.content', { - onsubmit: this.save.bind(this, vnode), - }, [ - m('label', 'Level'), - m('select', { - onchange: this.updateLevel.bind(this), - }, ranks.map(function(rank) { return m('option', { value: rank[0], selected: rank[0] === vnode.state.staff.rank }, rank[1]) })), - m('label', 'Fullname'), - m('input', { - type: 'text', - value: this.staff.name, - oninput: this.updateValue.bind(this, 'name'), - }), - m('label', 'Email'), - m('input', { - type: 'text', - value: this.staff.email, - oninput: this.updateValue.bind(this, 'email'), - }), - m('label', 'Password (optional)'), - m('input', { - type: 'text', - value: this.staff.password, - oninput: this.updateValue.bind(this, 'password'), - }), - m('input', { - type: 'submit', - value: 'Save', - }), - ]), - ]), - ]) - ) - }, -} - -module.exports = EditStaff diff --git a/nfp_moe_old/app/admin/froala.js b/nfp_moe_old/app/admin/froala.js deleted file mode 100644 index 8fc706b..0000000 --- a/nfp_moe_old/app/admin/froala.js +++ /dev/null @@ -1,46 +0,0 @@ -const Froala = { - files: [ - { type: 'css', url: 'https://cdn.jsdelivr.net/npm/froala-editor@3.0.4/css/froala_editor.pkgd.min.css' }, - { type: 'css', url: 'https://cdn.jsdelivr.net/npm/froala-editor@3.0.4/css/themes/gray.min.css' }, - { type: 'js', url: 'https://cdn.jsdelivr.net/npm/froala-editor@3.0.4/js/froala_editor.pkgd.min.js' }, - ], - loadedFiles: 0, - loadedFroala: false, - - checkLoadedAll: function(res) { - if (Froala.loadedFiles < Froala.files.length) { - return - } - Froala.loadedFroala = true - res() - }, - - createFroalaScript: function() { - if (Froala.loadedFroala) return Promise.resolve() - return new Promise(function(res) { - let onload = function() { - Froala.loadedFiles++ - Froala.checkLoadedAll(res) - } - let head = document.getElementsByTagName('head')[0] - - for (var i = 0; i < Froala.files.length; i++) { - let element - if (Froala.files[i].type === 'css') { - element = document.createElement('link') - element.setAttribute('rel', 'stylesheet') - element.setAttribute('type', 'text/css') - element.setAttribute('href', Froala.files[i].url) - } else { - element = document.createElement('script') - element.setAttribute('type', 'text/javascript') - element.setAttribute('src', Froala.files[i].url) - } - element.onload = onload - head.insertBefore(element, head.firstChild) - } - }) - }, -} - -module.exports = Froala diff --git a/nfp_moe_old/app/admin/pages.js b/nfp_moe_old/app/admin/pages.js deleted file mode 100644 index e55a4d0..0000000 --- a/nfp_moe_old/app/admin/pages.js +++ /dev/null @@ -1,113 +0,0 @@ -const Page = require('../api/page.p') -const Dialogue = require('../widgets/dialogue') -const common = require('../api/common') - -const AdminPages = { - oninit: function(vnode) { - this.error = '' - this.pages = [] - this.removePage = null - - document.title = 'Pages - Admin NFP Moe' - this.fetchPages(vnode) - }, - - fetchPages: function(vnode) { - this.loading = true - this.error = '' - - return common.sendRequest({ - method: 'GET', - url: '/api/auth/pages', - }) - .then((result) => { - this.pages = result.tree - }, (err) => { - this.error = err.message - }) - .then(() => { - this.loading = false - m.redraw() - }) - }, - - confirmRemovePage: function(vnode) { - let removingPage = this.removePage - this.removePage = null - this.loading = true - m.redraw() - - return common.sendRequest({ - method: 'DELETE', - url: '/api/auth/pages/' + removingPage.id, - }) - .then(() => Page.refreshTree()) - .then( - () => this.fetchPages(vnode), - (err) => { - this.error = err.message - this.loading = false - m.redraw() - } - ) - }, - - drawPage: function(vnode, page) { - return [ - m('tr', [ - m('td', [ - page.parent_id ? m('span.subpage', ' - ') : null, - m(m.route.Link, { href: '/admin/pages/' + page.id }, page.name), - ]), - m('td', m(m.route.Link, { href: '/page/' + page.path }, '/page/' + page.path)), - m('td.right', page.updated_at.replace('T', ' ').split('.')[0]), - m('td.right', m('button', { onclick: function() { vnode.state.removePage = page } }, 'Remove')), - ]), - ].concat(page.children ? page.children.map(AdminPages.drawPage.bind(this, vnode)) : []) - }, - - view: function(vnode) { - return [ - (this.loading ? - m('div.loading-spinner') - : m('div.admin-wrapper', [ - m('div.admin-actions', [ - m('span', 'Actions:'), - m(m.route.Link, { href: '/admin/pages/add' }, 'Create new page'), - ]), - m('article.editpage', [ - m('header', m('h1', 'All pages')), - m('div.error', { - hidden: !this.error, - onclick: () => { this.fetchPages(vnode) }, - }, this.error), - m('table', [ - m('thead', - m('tr', [ - m('th', 'Title'), - m('th', 'Path'), - m('th.right', 'Updated'), - m('th.right', 'Actions'), - ]) - ), - m('tbody', this.pages.map(AdminPages.drawPage.bind(this, vnode))), - ]), - ]), - ]) - ), - m(Dialogue, { - hidden: vnode.state.removePage === null, - title: 'Delete ' + (vnode.state.removePage ? vnode.state.removePage.name : ''), - message: 'Are you sure you want to remove "' + (vnode.state.removePage ? vnode.state.removePage.name : '') + '" (' + (vnode.state.removePage ? vnode.state.removePage.path : '') + ')', - yes: 'Remove', - yesclass: 'alert', - no: 'Cancel', - noclass: 'cancel', - onyes: this.confirmRemovePage.bind(this, vnode), - onno: function() { vnode.state.removePage = null }, - }), - ] - }, -} - -module.exports = AdminPages diff --git a/nfp_moe_old/app/admin/pages.scss b/nfp_moe_old/app/admin/pages.scss deleted file mode 100644 index 17a3b02..0000000 --- a/nfp_moe_old/app/admin/pages.scss +++ /dev/null @@ -1,66 +0,0 @@ - -article.editpage { - text-align: center; - background: white; - padding: 0 0 20px; - - header { - padding: 10px; - background: $secondary-bg; - - h1 { - color: $secondary-fg; - } - - a { - font-size: 14px; - text-decoration: none; - margin-left: 10px; - color: $secondary-light-fg; - } - } - - fileupload { - margin: 0 0 20px; - - .inside { - height: 150px; - } - } - - fileupload.cover { - align-self: center; - min-width: 178px; - - .display { - background-size: auto 100%; - } - } - - form { - padding: 0 40px 20px; - - textarea { - height: 300px; - } - - .loading-spinner { - height: 300px; - position: relative; - } - } - - h5 { - margin-bottom: 20px; - } - - & > .loading-spinner { - width: 240px; - height: 50px; - position: relative; - } -} - -table span.subpage { - padding: 0 5px; -} diff --git a/nfp_moe_old/app/admin/staff.scss b/nfp_moe_old/app/admin/staff.scss deleted file mode 100644 index 0eca2e5..0000000 --- a/nfp_moe_old/app/admin/staff.scss +++ /dev/null @@ -1,49 +0,0 @@ - -article.editstaff { - text-align: center; - background: white; - padding: 0 0 20px; - - header { - padding: 10px; - background: $secondary-bg; - - h1 { - color: $secondary-fg; - } - - a { - font-size: 14px; - text-decoration: none; - margin-left: 10px; - color: $secondary-light-fg; - } - } - - form { - padding: 0 40px 20px; - - textarea { - height: 300px; - } - - .loading-spinner { - height: 300px; - position: relative; - } - } - - h5 { - margin-bottom: 20px; - } - - & > .loading-spinner { - width: 240px; - height: 50px; - position: relative; - - &.full { - width: 100%; - } - } -} diff --git a/nfp_moe_old/app/admin/stafflist.js b/nfp_moe_old/app/admin/stafflist.js deleted file mode 100644 index 7ffeb9c..0000000 --- a/nfp_moe_old/app/admin/stafflist.js +++ /dev/null @@ -1,110 +0,0 @@ -const Staff = require('../api/staff') -const Dialogue = require('../widgets/dialogue') -const Pages = require('../widgets/pages') - -const AdminStaffList = { - oninit: function(vnode) { - this.error = '' - this.lastpage = m.route.param('page') || '1' - this.staff = [] - this.removeStaff = null - - this.fetchStaffs(vnode) - }, - - fetchStaffs: function(vnode) { - this.loading = true - - document.title = 'Staff members - Admin NFP Moe' - - return Staff.getAllStaff() - .then(function(result) { - vnode.state.staff = result - }) - .catch(function(err) { - vnode.state.error = err.message - }) - .then(function() { - vnode.state.loading = false - m.redraw() - }) - }, - - confirmRemoveStaff: function(vnode) { - let removingStaff = this.removeStaff - this.removeStaff = null - this.loading = true - Staff.removeStaff(removingStaff.id) - .then(this.oninit.bind(this, vnode)) - .catch(function(err) { - vnode.state.error = err.message - vnode.state.loading = false - m.redraw() - }) - }, - - getLevel: function(level) { - if (level === 100) { - return 'Admin' - } - return 'Manager' - }, - - view: function(vnode) { - return [ - m('div.admin-wrapper', [ - m('div.admin-actions', [ - m('span', 'Actions:'), - m(m.route.Link, { href: '/admin/staff/add' }, 'Create new staff'), - ]), - m('article.editarticle', [ - m('header', m('h1', 'All staff')), - m('div.error', { - hidden: !this.error, - onclick: function() { vnode.state.error = '' }, - }, this.error), - (this.loading - ? m('div.loading-spinner.full') - : m('table', [ - m('thead', - m('tr', [ - m('th', 'Fullname'), - m('th', 'Email'), - m('th', 'Level'), - m('th.right', 'Updated'), - m('th.right', 'Actions'), - ]) - ), - m('tbody', this.staff.map(function(item) { - return m('tr', [ - m('td', m(m.route.Link, { href: '/admin/staff/' + item.id }, item.name)), - m('td', item.email), - m('td.right', AdminStaffList.getLevel(item.rank)), - m('td.right', (item.updated_at || '---').replace('T', ' ').split('.')[0]), - m('td.right', m('button', { onclick: function() { vnode.state.removeStaff = item } }, 'Remove')), - ]) - })), - ]) - ), - m(Pages, { - base: '/admin/staff', - links: this.links, - }), - ]), - ]), - m(Dialogue, { - hidden: vnode.state.removeStaff === null, - title: 'Delete ' + (vnode.state.removeStaff ? vnode.state.removeStaff.name : ''), - message: 'Are you sure you want to remove "' + (vnode.state.removeStaff ? vnode.state.removeStaff.name : '') + '" (' + (vnode.state.removeStaff ? vnode.state.removeStaff.email : '') + ')', - yes: 'Remove', - yesclass: 'alert', - no: 'Cancel', - noclass: 'cancel', - onyes: this.confirmRemoveStaff.bind(this, vnode), - onno: function() { vnode.state.removeStaff = null }, - }), - ] - }, -} - -module.exports = AdminStaffList diff --git a/nfp_moe_old/app/api/article.js b/nfp_moe_old/app/api/article.js deleted file mode 100644 index 14b885d..0000000 --- a/nfp_moe_old/app/api/article.js +++ /dev/null @@ -1,64 +0,0 @@ -const common = require('./common') - -exports.createArticle = function(body) { - return common.sendRequest({ - method: 'POST', - url: '/api/articles', - body: body, - }) -} - -exports.updateArticle = function(id, body) { - return common.sendRequest({ - method: 'PUT', - url: '/api/articles/' + id, - body: body, - }) -} - -exports.getAllArticles = function() { - return common.sendRequest({ - method: 'GET', - url: '/api/articles?includes=parent', - }) -} - -exports.getAllArticlesPagination = function(options) { - let extra = '' - - if (options.sort) { - extra += '&sort=' + options.sort - } - if (options.per_page) { - extra += '&perPage=' + options.per_page - } - if (options.page) { - extra += '&page=' + options.page - } - if (options.includes) { - extra += '&includes=' + options.includes.join(',') - } - - return '/api/articles?' + extra -} - -exports.getAllPageArticles = function(pageId, includes) { - return common.sendRequest({ - method: 'GET', - url: '/api/pages/' + pageId + '/articles?includes=' + includes.join(','), - }) -} - -exports.getArticle = function(id) { - return common.sendRequest({ - method: 'GET', - url: '/api/articles/' + id + '?includes=media,parent,banner,files', - }) -} - -exports.removeArticle = function(article, id) { - return common.sendRequest({ - method: 'DELETE', - url: '/api/articles/' + id, - }) -} diff --git a/nfp_moe_old/app/api/article.p.js b/nfp_moe_old/app/api/article.p.js deleted file mode 100644 index 713fcf1..0000000 --- a/nfp_moe_old/app/api/article.p.js +++ /dev/null @@ -1,8 +0,0 @@ -const common = require('./common') - -exports.getArticle = function(id) { - return common.sendRequest({ - method: 'GET', - url: '/api/articles/' + id, - }) -} diff --git a/nfp_moe_old/app/api/common.js b/nfp_moe_old/app/api/common.js deleted file mode 100644 index 83f34e3..0000000 --- a/nfp_moe_old/app/api/common.js +++ /dev/null @@ -1,53 +0,0 @@ -const Authentication = require('../authentication') - -exports.sendRequest = function(options, isPagination) { - let token = Authentication.getToken() - let pagination = isPagination - - if (token) { - options.headers = options.headers || {} - options.headers['Authorization'] = 'Bearer ' + token - } - - options.extract = function(xhr) { - if (xhr.responseText && xhr.responseText.slice(0, 9) === '= 300) { - throw out - } - return out - } - - return m.request(options) - .catch(function (error) { - if (error.status === 403) { - Authentication.clearToken() - m.route.set('/login', { redirect: m.route.get() }) - } - if (error.response && error.response.status) { - return Promise.reject(error.response) - } - return Promise.reject(error) - }) -} diff --git a/nfp_moe_old/app/api/file.js b/nfp_moe_old/app/api/file.js deleted file mode 100644 index 3866ea5..0000000 --- a/nfp_moe_old/app/api/file.js +++ /dev/null @@ -1,12 +0,0 @@ -const common = require('./common') - -exports.uploadFile = function(articleId, file) { - let formData = new FormData() - formData.append('file', file) - - return common.sendRequest({ - method: 'POST', - url: '/api/articles/' + articleId + '/file', - body: formData, - }) -} diff --git a/nfp_moe_old/app/api/media.js b/nfp_moe_old/app/api/media.js deleted file mode 100644 index b6a641b..0000000 --- a/nfp_moe_old/app/api/media.js +++ /dev/null @@ -1,17 +0,0 @@ -const common = require('./common') - -exports.uploadMedia = function(file, height) { - let formData = new FormData() - formData.append('file', file) - - let extra = '' - if (height) { - extra = '?height=' + height - } - - return common.sendRequest({ - method: 'POST', - url: '/api/media' + extra, - body: formData, - }) -} diff --git a/nfp_moe_old/app/api/page.js b/nfp_moe_old/app/api/page.js deleted file mode 100644 index 8cf03ef..0000000 --- a/nfp_moe_old/app/api/page.js +++ /dev/null @@ -1,114 +0,0 @@ -const common = require('./common') - -const Tree = window.__nfptree && window.__nfptree.tree || [] - -exports.Tree = Tree - -exports.createPage = function(body) { - return common.sendRequest({ - method: 'POST', - url: '/api/pages', - body: body, - }).then(function(res) { - res.children = [] - if (!res.parent_id) { - Tree.push(res) - } else { - for (let i = 0; i < Tree.length; i++) { - if (Tree[i].id === res.parent_id) { - Tree[i].children.push(res) - break - } - } - } - return res - }) -} - -function processPageBranch(arr, branches, prefix) { - branches.forEach((page) => { - arr.push({ id: page.id, name: prefix + page.name }) - if (page.children && page.children.length) { - processPageBranch(arr, page.children, page.name + ' -> ') - } - }) -} - -exports.getFlatTree = function() { - let arr = [] - processPageBranch(arr, Tree, '') - return arr -} - -exports.getTree = function() { - return common.sendRequest({ - method: 'GET', - url: '/api/pages?tree=true&includes=children&fields=id,name,path,children(id,name,path)', - }) -} - -exports.updatePage = function(id, body) { - return common.sendRequest({ - method: 'PUT', - url: '/api/pages/' + id, - body: body, - }).then(function(res) { - for (let i = 0; i < Tree.length; i++) { - if (Tree[i].id === res.id) { - res.children = Tree[i].children - Tree[i] = res - break - } else if (Tree[i].id === res.parent_id) { - for (let x = 0; x < Tree[i].children.length; x++) { - if (Tree[i].children[x].id === res.id) { - res.children = Tree[i].children[x].children - Tree[i].children[x] = res - break - } - } - break - } - } - if (!res.children) { - res.children = [] - } - return res - }) -} - -exports.getAllPages = function() { - return common.sendRequest({ - method: 'GET', - url: '/api/pages', - }) -} - -exports.getPage = function(id) { - return common.sendRequest({ - method: 'GET', - url: '/api/pages/' + id + '?includes=media,banner', - }) -} - -exports.removePage = function(page, id) { - return common.sendRequest({ - method: 'DELETE', - url: '/api/pages/' + id, - }).then(function() { - for (let i = 0; i < Tree.length; i++) { - if (Tree[i].id === page.id) { - Tree.splice(i, 1) - break - } else if (Tree[i].id === page.parent_id) { - for (let x = 0; x < Tree[i].children.length; x++) { - if (Tree[i].children[x].id === page.id) { - Tree[i].children.splice(x, 1) - break - } - } - break - } - } - return null - }) -} diff --git a/nfp_moe_old/app/api/page.p.js b/nfp_moe_old/app/api/page.p.js deleted file mode 100644 index 990c9ca..0000000 --- a/nfp_moe_old/app/api/page.p.js +++ /dev/null @@ -1,54 +0,0 @@ -const common = require('./common') - -const Tree = window.__nfptree && window.__nfptree.tree || [] -const TreeMap = new Map() - -exports.Tree = Tree -exports.TreeMap = TreeMap - -function parseLeaf(tree) { - for (let branch of tree) { - TreeMap.set(branch.path, branch) - - if (branch.children && branch.children.length) { - parseLeaf(branch.children) - } - } -} - -parseLeaf(Tree) - -function processPageBranch(arr, branches, prefix) { - branches.forEach((page) => { - arr.push({ id: page.id, name: prefix + page.name }) - if (page.children && page.children.length) { - processPageBranch(arr, page.children, page.name + ' -> ') - } - }) -} - -exports.getFlatTree = function() { - let arr = [] - processPageBranch(arr, Tree, '') - return arr -} - -exports.getPage = function(path, page) { - return common.sendRequest({ - method: 'GET', - url: '/api/' + (path ? 'pages/' + path : 'frontpage') + '?page=' + (page || 1), - }) -} - -exports.refreshTree = function() { - return common.sendRequest({ - method: 'GET', - url: '/api/pagetree', - }) - .then(pages => { - Tree.splice(0, Tree.length) - Tree.push.apply(Tree, pages.tree) - TreeMap.clear() - parseLeaf(Tree) - }) -} diff --git a/nfp_moe_old/app/api/pagination.js b/nfp_moe_old/app/api/pagination.js deleted file mode 100644 index bca9076..0000000 --- a/nfp_moe_old/app/api/pagination.js +++ /dev/null @@ -1,81 +0,0 @@ -const common = require('./common') - -function hasRel(x) { - return x && x.rel; -} - -function intoRels (acc, x) { - function splitRel (rel) { - acc[rel] = xtend(x, { rel: rel }); - } - - x.rel.split(/\s+/).forEach(splitRel); - - return acc; -} - -function createObjects (acc, p) { - // rel="next" => 1: rel 2: next - var m = p.match(/\s*(.+)\s*=\s*"?([^"]+)"?/) - if (m) acc[m[1]] = m[2]; - return acc; -} - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -function extend() { - var target = {} - - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] - - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - target[key] = source[key] - } - } - } - - return target -} - -function parseLink(link) { - try { - var m = link.match(/]*)>(.*)/) - , linkUrl = m[1] - , parts = m[2].split(';') - , qry = new URL(linkUrl).searchParams; - - parts.shift(); - - var info = parts - .reduce(createObjects, {}); - - info = extend(qry, info); - info.url = linkUrl; - return info; - } catch (e) { - return null; - } -} - -function parse(linkHeader) { - return linkHeader.split(/,\s* { - this.showLoading = null - this.loading = true - m.redraw() - }, 150) - } else { - this.loading = true - } - - ApiArticle.getArticle(this.path) - .then((result) => { - this.data = result - - if (this.data.article.media_alt_prefix) { - this.data.article.pictureFallback = this.data.article.media_alt_prefix + '_small.jpg' - this.data.article.pictureJpeg = this.data.article.media_alt_prefix + '_small.jpg' + ' 720w, ' - + this.data.article.media_alt_prefix + '_medium.jpg' + ' 1300w, ' - + this.data.article.media_alt_prefix + '_large.jpg 1920w' - this.data.article.pictureAvif = this.data.article.media_alt_prefix + '_small.avif' + ' 720w, ' - + this.data.article.media_alt_prefix + '_medium.avif' + ' 1300w, ' - + this.data.article.media_alt_prefix + '_large.avif 1920w' - - this.data.article.pictureCover = '(max-width: 840px) calc(100vw - 82px), ' - + '758px' - } else { - this.data.article.pictureFallback = null - this.data.article.pictureJpeg = null - this.data.article.pictureAvif = null - this.data.article.pictureCover = null - } - - if (!this.data.article) { - this.error = 'Article not found' - } - }, (err) => { - this.error = err.message - }) - .then(() => { - clearTimeout(this.showLoading) - this.showLoading = null - this.loading = false - m.redraw() - }) - }, - - view: function(vnode) { - let article = this.data.article - return ( - this.loading ? - m('article.article', m('div.loading-spinner')) - : this.error - ? m('div.error-wrapper', m('div.error', { - onclick: function() { - vnode.state.error = '' - vnode.state.fetchArticle(vnode) - }, - }, 'Article error: ' + this.error)) - : m('article.article', [ - article.page_path - ? m('div.goback', ['« ', m(m.route.Link, { href: '/page/' + article.page_path }, article.page_name)]) - : null, - m('header', m('h1', article.name)), - m('.fr-view', [ - article.pictureFallback - ? m('a.cover', { - rel: 'noopener', - href: article.media_path, - }, [ - m('picture', [ - m('source', { - srcset: article.pictureAvif, - sizes: article.pictureCover, - type: 'image/avif', - }), - m('img', { - srcset: article.pictureJpeg, - sizes: article.pictureCover, - alt: 'Image for news item ' + article.name, - src: article.pictureFallback, - }), - ]), - ]) - : null, - article.content.blocks.map(block => { - return m(EditorBlock, { block: block }) - }), - this.data.files.map(function(file) { - return m(Fileinfo, { file: file }) - }), - m('div.entrymeta', [ - 'Posted ', - article.page_path - ? [ - 'in', - m(m.route.Link, { href: '/page/' + article.page_path }, article.page_name) - ] - : '', - 'at ' + (article.publish_at.replace('T', ' ').split('.')[0]).substr(0, 16), - ' by ' + (article.admin_name || 'Admin'), - ]), - ]), - Authentication.currentUser - ? m('div.admin-actions', [ - m('span', 'Admin controls:'), - m(m.route.Link, { href: '/admin/articles/' + article.path }, 'Edit article'), - ]) - : null, - this.showcomments - ? m('div.commentcontainer', [ - m('div#disqus_thread', { oncreate: function() { - let fullhost = window.location.protocol + '//' + window.location.host - /*eslint-disable */ - window.disqus_config = function () { - this.page.url = fullhost + '/article/' + vnode.state.article.path - this.page.identifier = 'article-' + vnode.state.article.id - }; - (function() { // DON'T EDIT BELOW THIS LINE - var d = document, s = d.createElement('script'); - s.src = 'https://nfp-moe.disqus.com/embed.js'; - s.setAttribute('data-timestamp', +new Date()); - (d.head || d.body).appendChild(s); - })() - /*eslint-enable */ - }}, m('div.loading-spinner')), - ]) - : m('button.opencomments', { - onclick: function() { vnode.state.showcomments = true }, - }, 'Open comment discussion'), - ]) - ) - }, -} - -module.exports = Article - -/* -
- - -*/ diff --git a/nfp_moe_old/app/article/article.scss b/nfp_moe_old/app/article/article.scss deleted file mode 100644 index f55e090..0000000 --- a/nfp_moe_old/app/article/article.scss +++ /dev/null @@ -1,151 +0,0 @@ - -article.article { - padding: 0; - - header { - text-align: center; - margin: 20px 20px 0; - padding: 10px; - background: $secondary-bg; - width: 100%; - max-width: 1920px; - align-self: center; - - h1 { - color: $secondary-fg; - } - } - - .loading-spinner { - position: relative; - flex-grow: 2; - height: 300px; - } - - .cover { - margin: 0 0 20px; - } - - .admin-actions { - margin-bottom: 20px; - } - - .fr-view { - margin: 0 20px; - padding: 20px 20px 10px; - width: calc(100% - 40px); - max-width: 800px; - flex: 2 0 0; - align-self: center; - background: $newsitem-bg; - border-right: 1px solid #343536; - border-left: 1px solid #343536; - - a.cover img { - margin-bottom: 30px; - } - - main { - padding: 0 5px; - } - } - - fileinfo { - font-size: 0.8em; - - ul { - padding-left: 0; - } - } - - .opencomments { - border: none; - align-self: center; - width: calc(100% - 40px); - max-width: 300px; - background: transparent; - font-size: 1.2em; - color: $secondary-dark-bg; - cursor: pointer; - height: 50px; - margin: 0 0 30px; - } - - .commentcontainer { - align-self: center; - width: calc(100% - 40px); - max-width: 800px; - margin-bottom: 30px; - min-height: 50px; - position: relative; - } - - .goback { - width: calc(100% - 40px); - max-width: 800px; - align-self: center; - padding: 30px 5px 0; - margin-bottom: -10px; - - a { - font-weight: bold; - text-decoration: none; - color: $secondary-dark-bg; - } - } - - .entrymeta { - flex-grow: 2; - font-size: 11px; - color: $meta-fg; - font-weight: bold; - margin: 40px 0 0; - - a { - color: $secondary-dark-bg; - margin: 0 4px; - text-decoration: none; - } - } -} - -@media screen and (max-width: 639px){ - article.article { - .fr-view { - margin: 0; - width: 100%; - border: none !important; - } - } -} - -.darkmodeon { - article.article { - header { - background: $dark_secondary-bg; - - h1 { - color: $dark_secondary-fg; - } - } - - .fr-view { - background: $dark_newsitem-bg; - } - - .opencomments { - color: $dark_secondary-dark-bg; - } - - .goback a { - color: $dark_secondary-dark-bg; - } - - .entrymeta { - color: $dark_meta-fg; - a { - color: $dark_secondary-dark-bg; - } - } - } -} diff --git a/nfp_moe_old/app/authentication.js b/nfp_moe_old/app/authentication.js deleted file mode 100644 index 873c769..0000000 --- a/nfp_moe_old/app/authentication.js +++ /dev/null @@ -1,42 +0,0 @@ -const storageName = 'nfp_sites_logintoken' - -const Authentication = { - currentUser: null, - isAdmin: false, - loadingListeners: [], - authListeners: [], - - updateToken: function(token) { - if (!token) return Authentication.clearToken() - localStorage.setItem(storageName, token) - Authentication.currentUser = JSON.parse(atob(token.split('.')[1])) - - if (Authentication.authListeners.length) { - Authentication.authListeners.forEach(function(x) { x(Authentication.currentUser) }) - } - }, - - clearToken: function() { - Authentication.currentUser = null - localStorage.removeItem(storageName) - Authentication.isAdmin = false - }, - - addEvent: function(event) { - Authentication.authListeners.push(event) - }, - - setAdmin: function(item) { - Authentication.isAdmin = item - }, - - getToken: function() { - return localStorage.getItem(storageName) - }, -} - -Authentication.updateToken(localStorage.getItem(storageName)) - -window.Authentication = Authentication - -module.exports = Authentication diff --git a/nfp_moe_old/app/darkmode.js b/nfp_moe_old/app/darkmode.js deleted file mode 100644 index 61e29fd..0000000 --- a/nfp_moe_old/app/darkmode.js +++ /dev/null @@ -1,25 +0,0 @@ -const storageName = 'darkmode' - -const Darkmode = { - darkIsOn: false, - - setDarkMode: function(setOn) { - if (setOn) { - localStorage.setItem(storageName, true) - document.body.className = 'darkmodeon' + ' ' + (window.supportsavif ? 'avifsupport' : 'jpegonly') - Darkmode.darkIsOn = true - } else { - localStorage.removeItem(storageName) - document.body.className = 'daymode' + ' ' + (window.supportsavif ? 'avifsupport' : 'jpegonly') - Darkmode.darkIsOn = false - } - }, - - isOn: function() { - return Darkmode.darkIsOn - }, -} - -Darkmode.darkIsOn = localStorage.getItem(storageName) - -module.exports = Darkmode diff --git a/nfp_moe_old/app/editor.scss b/nfp_moe_old/app/editor.scss deleted file mode 100644 index fd0d7f9..0000000 --- a/nfp_moe_old/app/editor.scss +++ /dev/null @@ -1,208 +0,0 @@ -.ce-block__content { - word-wrap: break-word; - - .clearfix::after { - clear: both; - display: block; - content: ""; - height: 0 - } - h1, h2, h3, h4, h5, h6, p, dl, ol, ul { - margin: 0 0 1em !important; - } - - blockquote { - border-left: solid 2px $main-fg; - margin-left: 0; - padding-left: 5px; - color: $main-fg; - } - - .hide-by-clipping { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0 - } - - img.fr-rounded, - .fr-img-caption.fr-rounded img { - border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box - } - - img.fr-bordered, - .fr-img-caption.fr-bordered img { - border: solid 5px #CCC - } - - img.fr-bordered { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box - } - - .fr-img-caption.fr-bordered img { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box - } - - span.fr-emoticon { - font-weight: normal; - font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; - display: inline; - line-height: 0 - } - - img { - position: relative; - max-width: 100% - } - - img.fr-dib { - margin: 5px auto; - display: block; - float: none; - vertical-align: top - } - - img.fr-dib.fr-fil { - margin-left: 0; - text-align: left - } - - img.fr-dib.fr-fir { - margin-right: 0; - text-align: right - } - - img.fr-dii { - display: inline-block; - float: none; - vertical-align: bottom; - margin-left: 5px; - margin-right: 5px; - max-width: calc(100% - (2 * 5px)) - } - - img.fr-dii.fr-fil { - float: left; - margin: 5px 5px 5px 0; - max-width: calc(100% - 5px) - } - - img.fr-dii.fr-fir { - float: right; - margin: 5px 0 5px 5px; - max-width: calc(100% - 5px) - } - - span.fr-img-caption { - position: relative; - max-width: 100% - } - - span.fr-img-caption.fr-dib { - margin: 5px auto; - display: block; - float: none; - vertical-align: top - } - - span.fr-img-caption.fr-dib.fr-fil { - margin-left: 0; - text-align: left - } - - span.fr-img-caption.fr-dib.fr-fir { - margin-right: 0; - text-align: right - } - - span.fr-img-caption.fr-dii { - display: inline-block; - float: none; - vertical-align: bottom; - margin-left: 5px; - margin-right: 5px; - max-width: calc(100% - (2 * 5px)) - } - - span.fr-img-caption.fr-dii.fr-fil { - float: left; - margin: 5px 5px 5px 0; - max-width: calc(100% - 5px) - } - - span.fr-img-caption.fr-dii.fr-fir { - float: right; - margin: 5px 0 5px 5px; - max-width: calc(100% - 5px) - } - - a.fr-strong { - font-weight: 700 - } - - a.fr-green { - color: green - } - - .fr-img-caption { - text-align: center - } - - .fr-img-caption .fr-img-wrap { - padding: 0; - display: inline-block; - margin: auto; - text-align: center; - width: 100% - } - - .fr-img-caption .fr-img-wrap img { - display: block; - margin: auto; - width: 100% - } - - .fr-img-caption .fr-img-wrap>span { - margin: auto; - display: block; - padding: 5px 5px 10px; - font-size: 14px; - font-weight: initial; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-opacity: 0.9; - -moz-opacity: 0.9; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - width: 100%; - text-align: center - } - - a { color: $secondary-dark-bg; } - dt { font-weight: bold; } - ol { list-style-type: decimal; padding-left: 40px; } - ul { list-style-type: disc; padding-left: 40px; } - h1 { font-size: 1.8em; font-weight: bold; } - h2 { font-size: 1.6em; font-weight: bold; } - h3 { font-size: 1.4em; font-weight: bold; } - h4 { font-size: 1.2em; font-weight: bold; } - h5 { font-size: 1.0em; font-weight: bold; } - h6 { font-size: 0.8em; font-weight: bold; } - hr { width: 100%; } - strong { font-weight: 700 } - -} diff --git a/nfp_moe_old/app/footer/footer.js b/nfp_moe_old/app/footer/footer.js deleted file mode 100644 index f9740fa..0000000 --- a/nfp_moe_old/app/footer/footer.js +++ /dev/null @@ -1,42 +0,0 @@ -const m = require('mithril') -const Page = require('../api/page.p') -const Authentication = require('../authentication') - -const Footer = { - oninit: function(vnode) { - this.year = new Date().getFullYear() - }, - - view: function() { - return [ - m('div.footer-filler'), - m('div.sitemap', [ - m('div', 'Sitemap'), - m(m.route.Link, { class: 'root', href: '/' }, 'Home'), - Page.Tree.map(function(page) { - return [ - m(m.route.Link, { class: 'root', href: '/page/' + page.path }, page.name), - (page.children - ? m('ul', page.children.map(function(subpage) { - return m('li', m(m.route.Link, { class: 'child', href: '/page/' + subpage.path }, subpage.name)) - })) - : null), - ] - }), - !Authentication.currentUser - ? m(m.route.Link, { class: 'root', href: '/login' }, 'Login') - : null, - m('div.meta', [ - '©' - + this.year - + ' NFP Encodes - nfp@nfp.moe - ', - m('a', { rel: 'noopener', href: 'https://www.iubenda.com/privacy-policy/31076050', target: '_blank' }, 'Privacy Policy'), - ' (Fuck EU)', - ]), - ]), - m('div.footer-logo'), - ] - }, -} - -module.exports = Footer diff --git a/nfp_moe_old/app/footer/footer.scss b/nfp_moe_old/app/footer/footer.scss deleted file mode 100644 index dd583e5..0000000 --- a/nfp_moe_old/app/footer/footer.scss +++ /dev/null @@ -1,155 +0,0 @@ - -footer { - margin-top: 0px; - border-top: 1px solid $border; - display: flex; - padding: 20px; - background: $border; - color: $border-fg; - - .sitemap { - display: flex; - flex: 2 1 auto; - flex-direction: column; - text-align: center; - align-items: center; - font-size: 11px; - font-weight: bold; - padding: 0 20px; - - a { - text-decoration: none; - color: $border-fg-url; - } - - a.root { - display: block; - margin: 2px; - padding: 2px 0 0; - } - - ul { - margin: 2px 0 0; - display: flex; - flex-wrap: wrap; - padding: 0 0 10px; - justify-content: center; - border-bottom: 1px solid white; - margin-bottom: 10px; - min-width: 300px; - - li { - padding: 2px 5px; - list-style-type: disc; - list-style-position: inside; - } - } - } - - .footer-filler { - width: 119px; - flex: 0 0 119px; - } - - .footer-logo { - background: center no-repeat transparent; - background-size: contain; - align-self: center; - width: 119px; - height: 150px; - flex: 0 0 119px; - } - - .meta { - flex-grow: 2; - display: flex; - flex-wrap: wrap; - padding-top: 5px; - align-items: flex-end; - text-align: center; - justify-content: center; - - a { margin: 0 3px; } - } -} - -.darkmodeon { - footer { - border-top: 1px solid $dark_border; - background: $dark_border; - color: $dark_border-fg; - - .sitemap { - a { - color: $dark_secondary-darker-fg; - } - } - } -} - -.daymode.jpegonly footer .footer-logo { - background-image: url("/assets/img/tsun_small.jpg"); -} - -.darkmodeon.jpegonly footer .footer-logo { - background-image: url("/assets/img/dark_tsun_small.jpg"); -} - -.avifsupport footer .footer-logo { - background-image: url("/assets/img/tsun.avif"); -} - -@media -only screen and (-webkit-min-device-pixel-ratio: 2), -only screen and ( min--moz-device-pixel-ratio: 2), -only screen and ( -o-min-device-pixel-ratio: 2/1), -only screen and ( min-device-pixel-ratio: 2), -only screen and ( min-resolution: 192dpi), -only screen and ( min-resolution: 2dppx) { - .daymode.jpegonly .footer-logo { - background-image: url("/assets/img/tsun.jpg"); - } - - .darkmodeon.jpegonly .footer-logo { - background-image: url("/assets/img/dark_tsun.jpg"); - } -} - -@media (pointer:coarse) { - footer .sitemap a.root, - footer .sitemap a.child { - padding: 10px 10px; - display: inline-block; - } -} - -@media screen and (max-width: 900px){ - footer .footer-filler { - display: none; - } -} - -@media screen and (max-width: 480px){ - footer { - flex-direction: column; - align-items: center; - - .footer-logo { - margin-top: 20px; - } - - .sitemap { - padding: 0px; - - ul { - align-self: stretch; - } - } - } - - footer .sitemap a.root, - footer .sitemap a.child { - padding: 9px 10px; - display: inline-block; - } -} diff --git a/nfp_moe_old/app/frontpage/frontpage.js b/nfp_moe_old/app/frontpage/frontpage.js deleted file mode 100644 index 8e9cb29..0000000 --- a/nfp_moe_old/app/frontpage/frontpage.js +++ /dev/null @@ -1,146 +0,0 @@ -const m = require('mithril') - -const Page = require('../api/page.p') -const Article = require('../api/article.p') -const Pagination = require('../api/pagination') -const Pages = require('../widgets/pages') -const Newsitem = require('../widgets/newsitem') - -const Frontpage = { - oninit: function(vnode) { - this.error = '' - this.loading = false - this.showLoading = null - this.data = { - page: null, - articles: [], - total_articles: 0, - featured: null, - } - this.currentPage = Number(m.route.param('page')) || 1 - - if (window.__nfpdata) { - this.lastpage = this.currentPage - window.__nfpdata = null - - if (this.articles.length === 0) { - m.route.set('/') - } - } else { - this.fetchPage(vnode) - } - }, - - onbeforeupdate: function(vnode) { - this.currentPage = Number(m.route.param('page')) || 1 - if (this.lastpage !== this.currentPage) { - this.fetchPage(vnode) - } - }, - - fetchPage: function(vnode) { - this.error = '' - this.lastpage = this.currentPage - - if (this.showLoading) { - clearTimeout(this.showLoading) - } - - this.showLoading = setTimeout(() => { - this.showLoading = null - this.loading = true - m.redraw() - }, 150) - - if (this.lastpage !== 1) { - document.title = 'Page ' + this.lastpage + ' - NFP Moe - Anime/Manga translation group' - } else { - document.title = 'NFP Moe - Anime/Manga translation group' - } - - return Page.getPage(null, this.lastpage) - .then((result) => { - this.data = result - }, (err) => { - this.error = err.message - }) - .then(() => { - clearTimeout(this.showLoading) - this.showLoading = null - this.loading = false - m.redraw() - }) - }, - - view: function(vnode) { - var deviceWidth = window.innerWidth - var bannerPath = this.data.featured && this.data.featured.banner_alt_prefix - - if (bannerPath) { - var pixelRatio = window.devicePixelRatio || 1 - if ((deviceWidth < 720 && pixelRatio <= 1) - || (deviceWidth < 360 && pixelRatio <= 2)) { - bannerPath += '_small' - } else if ((deviceWidth < 1300 && pixelRatio <= 1) - || (deviceWidth < 650 && pixelRatio <= 2)) { - bannerPath += '_medium' - } else { - bannerPath += '_large' - } - if (window.supportsavif) { - bannerPath += '.avif' - } else { - bannerPath += '.jpg' - } - } - - return [ - (bannerPath - ? m(m.route.Link, { - class: 'frontpage-banner', - href: '/article/' + this.data.featured.path, - style: { 'background-image': 'url("' + bannerPath + '")' }, - }, - this.data.featured.name - ) - : null), - m('frontpage', [ - m('aside.sidebar', [ - m('div.categories', [ - m('h4', 'Categories'), - m('div', - Page.Tree.map(function(page) { - return [ - m(m.route.Link, { class: 'root', href: '/page/' + page.path }, page.name), - (page.children.length - ? m('ul', page.children.map(function(subpage) { - return m('li', m(m.route.Link, { class: 'child', href: '/page/' + subpage.path }, subpage.name)) - })) - : null), - ] - }) - ), - ]), - m('div.asunaside', { - class: window.supportsavif ? 'avif' : 'jpeg' - }), - ]), - m('.frontpage-news', [ - (this.loading - ? m('div.loading-spinner') - : null), - this.data.articles.map(function(article) { - return m(Newsitem, { article: article }) - }), - m(Pages, { - base: '/', - total: this.data.total_articles, - page: this.currentPage, - }), - ]), - ]), - ] - }, -} - -module.exports = Frontpage diff --git a/nfp_moe_old/app/frontpage/frontpage.scss b/nfp_moe_old/app/frontpage/frontpage.scss deleted file mode 100644 index 1a075dd..0000000 --- a/nfp_moe_old/app/frontpage/frontpage.scss +++ /dev/null @@ -1,197 +0,0 @@ -.frontpage-banner { - background-color: $meta-light-fg; - background-size: cover; - background-repeat: no-repeat; - background-position: center; - height: 150px; - width: calc(100% - 40px); - max-width: 1920px; - align-self: center; - flex: 0 0 150px; - margin-bottom: 20px; - color: white; - text-shadow: 0 0 0.3em #000000; - text-align: right; - font-size: 1.6em; - padding: 10px 20px; - text-decoration: none; - margin: 20px 0; -} - -frontpage { - display: flex; - align-self: center; - width: calc(100% - 40px); - max-width: 1200px; - flex: 2 0 0; - - .frontpage-news { - display: flex; - flex-direction: column; - flex-grow: 2; - } - - aside.sidebar { - width: 250px; - flex: 0 0 250px; - align-self: flex-start; - margin-right: 20px; - display: flex; - flex-direction: column; - - .categories { - padding: 10px 10px 20px; - margin-bottom: 20px; - background: $newsitem-bg; - border: $newsitem-border; - } - - h4 { - font-size: 14px; - padding: 0 5px 5px; - font-weight: bold; - margin: 0 0 10px; - border-bottom: 1px solid $border; - } - - ul { - margin: 0; - padding: 0; - - li { - padding-left: 10px; - list-style-type: disc; - list-style-position: inside; - } - } - - a { - padding: 2px 5px; - display: block; - text-decoration: none; - color: $secondary-dark-bg; - font-size: 14px; - font-weight: bold; - display: inline-block; - max-width: 200px; - } - } - - .loading-spinner { - height: 100px; - position: relative; - } - - newsitem { - margin-bottom: 30px; - } - - .asunaside { - display: block; - width: 200px; - height: 480px; - background-size: contain; - background-repeat: no-repeat; - background-position: top left; - align-self: center; - } -} - -@media screen and (max-width: 1000px) { - frontpage aside.sidebar { - width: 200px; - flex: 0 0 200px; - - a { - max-width: 150px; - } - } -} - -@media screen and (max-width: 900px){ - frontpage { - flex-direction: column; - - aside.sidebar { - width: auto; - flex: 0 0 auto; - align-self: stretch; - margin: 20px 0 30px; - border-bottom: 1px solid $border; - order: 2; - - .categories { - display: flex; - flex-direction: column; - align-items: center; - - h4 { - align-self: stretch; - } - } - - a { - max-width: unset; - } - } - } -} - -.daymode.jpegonly frontpage .asunaside { - background-image: url("/assets/img/asuna_frontpage.jpg"); -} -.daymode.avifsupport frontpage .asunaside { - background-image: url("/assets/img/asuna_frontpage.avif?v=1"); -} - -.darkmodeon.jpegonly frontpage .asunaside { - background-image: url("/assets/img/dark_asuna_frontpage.jpg"); -} -.darkmodeon.avifsupport frontpage .asunaside { - background-image: url("/assets/img/dark_asuna_frontpage.avif?v=1"); -} - -@media screen and (max-width: 480px){ - .frontpage-banner { - width: 100%; - } - - frontpage { - padding: 0 10px; - margin: 0; - width: 100%; - } - - frontpage aside.sidebar a { - padding: 9px 10px; - } -} - -@media (pointer:coarse) { - frontpage aside.sidebar a { - padding: 9px 10px; - } -} - -.darkmodeon { - .frontpage-banner { - background-color: $dark_meta-light-fg; - } - - frontpage { - aside.sidebar { - .categories { - background: $dark_newsitem-bg; - border: $dark_newsitem-border; - } - - h4 { - border-bottom: 1px solid $dark_border; - } - - a { - color: $dark_secondary-dark-bg; - } - } - } -} diff --git a/nfp_moe_old/app/index.js b/nfp_moe_old/app/index.js deleted file mode 100644 index 16a2029..0000000 --- a/nfp_moe_old/app/index.js +++ /dev/null @@ -1,135 +0,0 @@ -require('./polyfill') - -const m = require('mithril') -window.m = m - -m.route.setOrig = m.route.set -m.route.set = function(path, data, options){ - m.route.setOrig(path, data, options) - window.scrollTo(0, 0) -} - -m.route.linkOrig = m.route.link -m.route.link = function(vnode){ - m.route.linkOrig(vnode) - window.scrollTo(0, 0) -} - -const Authentication = require('./authentication') - -m.route.prefix = '' -window.adminRoutes = {} -let loadingAdmin = false -let loadedAdmin = false -let loaded = 0 -let elements = [] - -const onLoaded = function() { - loaded++ - if (loaded < 2) return - - Authentication.setAdmin(Authentication.currentUser && Authentication.currentUser.rank >= 10) - loadedAdmin = true - m.route.set(m.route.get()) -} - -const onError = function(a, b, c) { - elements.forEach(function(x) { x.remove() }) - loadedAdmin = loadingAdmin = false - loaded = 0 - m.route.set('/logout') -} - -const loadAdmin = function(user) { - if (loadingAdmin) { - if (loadedAdmin) { - Authentication.setAdmin(user && user.rank >= 10) - } - return - } - if (!user || user.rank < 10) return - - loadingAdmin = true - - let token = Authentication.getToken() - let element = document.createElement('link') - elements.push(element) - element.setAttribute('rel', 'stylesheet') - element.setAttribute('type', 'text/css') - element.setAttribute('href', '/assets/admin.css?token=' + token) - element.onload = onLoaded - element.onerror = onError - document.getElementsByTagName('head')[0].appendChild(element) - - element = document.createElement('script') - elements.push(element) - element.setAttribute('type', 'text/javascript') - element.setAttribute('src', '/assets/admin.js?token=' + token) - element.onload = onLoaded - element.onerror = onError - document.body.appendChild(element) - - element = document.createElement('script') - elements.push(element) - element.setAttribute('type', 'text/javascript') - element.setAttribute('src', '/assets/editor.js') - element.onload = onLoaded - element.onerror = onError - document.body.appendChild(element) -} - -Authentication.addEvent(loadAdmin) -if (Authentication.currentUser) { - loadAdmin(Authentication.currentUser) -} - -const Menu = require('./menu/menu') -const Footer = require('./footer/footer') -const Frontpage = require('./frontpage/frontpage') -const Login = require('./login/login') -const Logout = require('./login/logout') -const Page = require('./pages/page') -const Article = require('./article/article') - -const menuRoot = document.getElementById('nav') -const mainRoot = document.getElementById('main') -const footerRoot = document.getElementById('footer') - -const Loader = { - view: function() { return m('div.loading-spinner') }, -} -const AdminResolver = { - onmatch: function(args, requestedPath) { - if (window.adminRoutes[args.path]) { - return window.adminRoutes[args.path][args.id && 1 || 0] - } - return Loader - }, - render: function(vnode) { return vnode }, -} - -const allRoutes = { - '/': Frontpage, - '/login': Login, - '/logout': Logout, - '/page/:id': Page, - '/article/:id': Article, - '/admin/:path': AdminResolver, - '/admin/:path/:id': AdminResolver, -} - -// Wait until we finish checking avif support, some views render immediately and will ask for this immediately before the callback gets called. - -/* - * imgsupport.js from leechy/imgsupport - */ -const AVIF = new Image(); -AVIF.onload = AVIF.onerror = function () { - window.supportsavif = (AVIF.height === 2) - document.body.className = document.body.className + ' ' + (window.supportsavif ? 'avifsupport' : 'jpegonly') - - m.route(mainRoot, '/', allRoutes) - m.mount(menuRoot, Menu) - m.mount(footerRoot, Footer) -} -AVIF.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A='; diff --git a/nfp_moe_old/app/login/login.js b/nfp_moe_old/app/login/login.js deleted file mode 100644 index b4c19da..0000000 --- a/nfp_moe_old/app/login/login.js +++ /dev/null @@ -1,101 +0,0 @@ -const m = require('mithril') -const Authentication = require('../authentication') -const Api = require('../api/common') - -const Login = { - loading: false, - redirect: '', - error: '', - - oninit: function(vnode) { - Login.redirect = vnode.attrs.redirect || '' - if (Authentication.currentUser) return m.route.set('/') - Login.error = '' - - this.username = '' - this.password = '' - }, - - oncreate: function() { - if (Authentication.currentUser) return - }, - - loginuser: function(vnode, e) { - e.preventDefault() - if (!this.username) { - Login.error = 'Email is missing' - } else if (!this.password) { - Login.error = 'Password is missing' - } else { - Login.error = '' - } - if (Login.error) return - - Login.loading = true - - Api.sendRequest({ - method: 'POST', - url: '/api/authentication/login', - body: { - email: this.username, - password: this.password, - }, - }) - .then(function(result) { - if (!result.token) { - return Promise.reject(new Error('Server authentication down.')) - } - Authentication.updateToken(result.token) - m.route.set(Login.redirect || '/') - }) - .catch(function(error) { - Login.error = 'Error while logging into NFP! ' + error.message - vnode.state.password = '' - }) - .then(function () { - Login.loading = false - m.redraw() - }) - }, - - view: function(vnode) { - return [ - m('div.login-wrapper', [ - m('div.login-icon'), - m('article.login', [ - m('header', [ - m('h1', 'NFP.moe login'), - ]), - m('div.content', [ - m('h5', 'Please login to access restricted area'), - Login.error ? m('div.error', Login.error) : null, - Login.loading ? m('div.loading-spinner') : null, - m('form', { - hidden: Login.loading, - onsubmit: this.loginuser.bind(this, vnode), - }, [ - m('label', 'Email'), - m('input', { - type: 'text', - value: this.username, - oninput: function(e) { vnode.state.username = e.currentTarget.value }, - }), - m('label', 'Password'), - m('input', { - type: 'password', - value: this.password, - oninput: function(e) { vnode.state.password = e.currentTarget.value }, - }), - m('input', { - type: 'submit', - value: 'Login', - }), - ]), - ]), - ]), - ]), - ] - }, -} - -module.exports = Login diff --git a/nfp_moe_old/app/login/login.scss b/nfp_moe_old/app/login/login.scss deleted file mode 100644 index 9053cea..0000000 --- a/nfp_moe_old/app/login/login.scss +++ /dev/null @@ -1,60 +0,0 @@ -@import '../_common'; - -.login-wrapper { - flex-grow: 2; - display: flex; - flex-direction: column; - justify-content: center; - background: $border; - padding: 40px 0; - - .login-icon { - background: url('./img/login.png') center no-repeat transparent; - background-size: contain; - width: 106px; - height: 130px; - align-self: center; - } -} - -article.login { - text-align: center; - flex-grow: 0; - border: 1px solid $title-fg; - background: $main-bg; - color: $main-fg; - align-self: center; - - .content { - align-items: center; - align-self: center; - padding: 20px 40px; - } - - h5 { - margin-bottom: 20px; - } - - .loading-spinner { - width: 240px; - height: 50px; - position: relative; - } - - form { - align-self: stretch; - margin-bottom: 20px; - } -} - -.darkmodeon { - .login-wrapper { - background: $dark_border; - } - - article.login { - border: 1px solid $dark_title-fg; - background: $dark_main-bg; - color: $dark_main-fg; - } -} diff --git a/nfp_moe_old/app/login/logout.js b/nfp_moe_old/app/login/logout.js deleted file mode 100644 index 8ca407f..0000000 --- a/nfp_moe_old/app/login/logout.js +++ /dev/null @@ -1,15 +0,0 @@ -const m = require('mithril') -const Authentication = require('../authentication') - -const Logout = { - oninit: function() { - Authentication.clearToken() - m.route.set('/') - }, - - view: function() { - return m('div.loading-spinner') - }, -} - -module.exports = Logout diff --git a/nfp_moe_old/app/menu/menu.js b/nfp_moe_old/app/menu/menu.js deleted file mode 100644 index c14adfe..0000000 --- a/nfp_moe_old/app/menu/menu.js +++ /dev/null @@ -1,92 +0,0 @@ -const m = require('mithril') -const Authentication = require('../authentication') -const Darkmode = require('../darkmode') -const Page = require('../api/page.p') - -const Menu = { - currentActive: 'home', - error: '', - loading: false, - - onbeforeupdate: function() { - let currentPath = m.route.get() - if (currentPath === '/') Menu.currentActive = 'home' - else if (currentPath === '/login') Menu.currentActive = 'login' - else Menu.currentActive = currentPath - }, - - oninit: function(vnode) { - Menu.onbeforeupdate() - - if (Page.Tree.length) return - - Menu.loading = true - - Page.refreshTree() - .catch(function(err) { - Menu.error = err.message - }) - .then(function() { - Menu.loading = false - m.redraw() - }) - }, - - view: function() { - console.log('menu view', Boolean(Authentication.currentUser)) - return [ - m('div.top', [ - m(m.route.Link, - { href: '/', class: 'logo' }, - m('h2', 'NFP Moe') - ), - m('aside', Authentication.currentUser ? [ - m('p', [ - 'Welcome ' + Authentication.currentUser.name, - m(m.route.Link, { href: '/logout' }, 'Logout'), - (Darkmode.darkIsOn - ? m('button.dark', { onclick: Darkmode.setDarkMode.bind(Darkmode, false) }, 'Day mode') - : m('button.dark', { onclick: Darkmode.setDarkMode.bind(Darkmode, true) }, 'Night mode') - ), - ]), - (Authentication.isAdmin - ? m('div.adminlinks', [ - m(m.route.Link, { href: '/admin/articles/add' }, 'Create article'), - m(m.route.Link, { href: '/admin/articles' }, 'Articles'), - m(m.route.Link, { href: '/admin/pages' }, 'Pages'), - m(m.route.Link, { hidden: Authentication.currentUser.rank < 100, href: '/admin/staff' }, 'Staff'), - ]) - : (Authentication.currentUser.rank > 10 ? m('div.loading-spinner') : null) - ), - ] : (Darkmode.darkIsOn - ? m('button.dark', { onclick: Darkmode.setDarkMode.bind(Darkmode, false) }, 'Day mode') - : m('button.dark', { onclick: Darkmode.setDarkMode.bind(Darkmode, true) }, 'Night mode') - ) - ), - ]), - m('nav', [ - m(m.route.Link, { - href: '/', - class: Menu.currentActive === 'home' ? 'active' : '', - }, 'Home'), - Menu.loading ? m('div.loading-spinner') : Page.Tree.map(function(page) { - if (page.children) { - return m('div.hassubmenu', [ - m(m.route.Link, { - href: '/page/' + page.path, - class: Menu.currentActive === ('/page/' + page.path) ? 'active' : '', - }, page.name), - ]) - } - return m(m.route.Link, { - href: '/page/' + page.path, - class: Menu.currentActive === ('/page/' + page.path) ? 'active' : '', - }, page.name) - }), - ]), - Menu.error ? m('div.menuerror', Menu.error) : null, - ] - }, -} - -module.exports = Menu diff --git a/nfp_moe_old/app/menu/menu.scss b/nfp_moe_old/app/menu/menu.scss deleted file mode 100644 index 233c33b..0000000 --- a/nfp_moe_old/app/menu/menu.scss +++ /dev/null @@ -1,188 +0,0 @@ -@import '../_common'; - -#nav { - display: flex; - flex-direction: column; - - .top { - background: $primary-dark-bg; - color: $primary-dark-fg; - padding: 0 10px 0 0; - min-height: 100px; - display: flex; - - button.dark { - background: transparent; - color: $secondary-light-bg; - border: none; - cursor: pointer; - font-weight: bold; - } - - a.logo { - background: 25px center no-repeat transparent; - background-size: auto 91px; - padding-left: 120px; - display: flex; - color: $primary-dark-fg; - text-decoration: none; - } - - h2 { - align-self: center; - font-size: 30px; - } - - aside { - flex-grow: 2; - display: flex; - flex-direction: column; - align-items: flex-end; - padding: 10px 0; - - p { - font-size: 0.8em; - color: $meta-light-fg; - padding-bottom: 5px; - - a { - margin-left: 5px; - } - - button { - font-size: 0.8em; - } - } - - a, a:visited { - font-weight: bold; - text-align: center; - color: $secondary-light-bg; - font-size: 0.8em; - line-height: 1.4em; - text-decoration: none; - } - - .adminlinks { - display: flex; - justify-content: center; - max-width: 200px; - flex-wrap: wrap; - - a { - padding: 3px 5px; - min-width: 100px; - } - } - - .loading-spinner { - position: relative; - width: 200px; - } - } - } - - nav { - display: flex; - background: $primary-light-bg; - color: $primary-light-fg; - - .hassubmenu { - flex-grow: 2; - flex-basis: 0; - display: flex; - } - - a, a:visited { - flex-grow: 2; - flex-basis: 0; - display: flex; - align-items: center; - justify-content: center; - text-align: center; - color: $primary-light-fg; - padding: 10px; - font-size: 0.9em; - text-decoration: none; - - &.active { - border-bottom: 3px solid $secondary-bg; - } - } - } - - .loading-spinner { - position: relative; - flex-grow: 2; - flex-basis: 0; - } - - .menuerror { - background: $primary-bg; - text-align: center; - padding: 10px; - color: $primary-fg-url; - font-weight: bold; - } -} - -.avifsupport #nav .top a.logo { - background-image: url("/assets/img/logo.avif"); -} - -.jpegonly #nav .top a.logo { - background-image: url("/assets/img/logo_small.jpg"); -} - -@media -only screen and (-webkit-min-device-pixel-ratio: 2), -only screen and ( min--moz-device-pixel-ratio: 2), -only screen and ( -o-min-device-pixel-ratio: 2/1), -only screen and ( min-device-pixel-ratio: 2), -only screen and ( min-resolution: 192dpi), -only screen and ( min-resolution: 2dppx) { - .jpegonly #nav .top a.logo { - background-image: url("/assets/img/logo.jpg"); - } -} - -.darkmodeon { - #nav { - .top { - background: $dark_primary-dark-bg; - color: $dark_primary-dark-fg; - - a.logo { - color: $dark_primary-dark-fg; - } - - aside { - p { - color: $dark_meta-light-fg; - } - - a, a:visited { - color: $dark_secondary-light-bg; - } - } - } - - nav { - background: $dark_primary-light-bg; - color: $dark_primary-light-fg; - - a, a:visited { - color: $dark_primary-light-fg; - - &.active { - border-bottom: 3px solid $dark_secondary-bg; - } - } - } - - .menuerror { - background: $dark_primary-bg; - color: $dark_primary-fg-url; - } - } -} diff --git a/nfp_moe_old/app/pages/page.js b/nfp_moe_old/app/pages/page.js deleted file mode 100644 index 54d2af8..0000000 --- a/nfp_moe_old/app/pages/page.js +++ /dev/null @@ -1,233 +0,0 @@ -const m = require('mithril') -const ApiPage = require('../api/page.p') -const Article = require('../api/article.p') -const pagination = require('../api/pagination') -const Authentication = require('../authentication') -const Newsentry = require('../widgets/newsentry') -const Pages = require('../widgets/pages') - -const Page = { - oninit: function(vnode) { - this.error = '' - this.loading = false - this.showLoading = null - this.data = { - page: null, - articles: [], - total_articles: 0, - featured: null, - } - this.children = [] - this.currentPage = Number(m.route.param('page')) || 1 - - if (window.__nfpdata) { - this.path = m.route.param('id') - this.data = window.__nfpdata - - window.__nfpdata = null - window.__nfpsubdata = null - } else { - this.fetchPage(vnode) - } - }, - - onbeforeupdate: function(vnode) { - this.currentPage = Number(m.route.param('page')) || 1 - - if (this.path !== m.route.param('id') || this.currentPage !== this.lastpage) { - this.fetchPage(vnode) - } - }, - - fetchPage: function(vnode) { - this.error = '' - this.lastpage = this.currentPage - this.path = m.route.param('id') - - if (this.showLoading) { - clearTimeout(this.showLoading) - } - - if (this.data.page) { - this.showLoading = setTimeout(() => { - this.showLoading = null - this.loading = true - m.redraw() - }, 150) - } else { - this.loading = true - } - - this.children = ApiPage.TreeMap.get(this.path) - this.children = this.children && this.children.children || [] - - ApiPage.getPage(this.path, this.lastpage) - .then((result) => { - this.data = result - - if (!this.data.page) { - this.error = 'Page not found' - return - } - - if (this.data.page.media_alt_prefix) { - this.data.page.pictureFallback = this.data.page.media_alt_prefix + '_small.jpg' - this.data.page.pictureJpeg = this.data.page.media_alt_prefix + '_small.jpg' + ' 720w, ' - + this.data.page.media_alt_prefix + '_medium.jpg' + ' 1300w, ' - + this.data.page.media_alt_prefix + '_large.jpg 1920w' - this.data.page.pictureAvif = this.data.page.media_alt_prefix + '_small.avif' + ' 720w, ' - + this.data.page.media_alt_prefix + '_medium.avif' + ' 1300w, ' - + this.data.page.media_alt_prefix + '_large.avif 1920w' - - this.data.page.pictureCover = '(max-width: 840px) calc(100vw - 82px), ' - + '758px' - } else { - this.data.page.pictureFallback = null - this.data.page.pictureJpeg = null - this.data.page.pictureAvif = null - this.data.page.pictureCover = null - } - - if (this.lastpage !== 1) { - document.title = 'Page ' + this.lastpage + ' - ' + this.data.page.name + ' - NFP Moe' - } else { - document.title = this.data.page.name + ' - NFP Moe' - } - }, (err) => { - this.error = err.message - }) - .then(() => { - clearTimeout(this.showLoading) - this.showLoading = null - this.loading = false - m.redraw() - }) - }, - - view: function(vnode) { - let page = this.data.page - let bannerPath = '' - - return ([ - this.loading - ? m('article.page', m('div.loading-spinner')) - : null, - !this.loading && this.error - ? m('div.error-wrapper', m('div.error', { - onclick: function() { - vnode.state.error = '' - vnode.state.fetchPage(vnode) - }, - }, 'Page error: ' + this.error)) - : null, - !this.loading && !this.error - ? m('article.page', [ - bannerPath - ? m('.div.page-banner', { style: { 'background-image': 'url("' + bannerPath + '")' } } ) - : null, - m('div.goback', ['« ', m(m.route.Link, { - href: page.parent_path - ? '/page/' + page.parent_path - : '/' - }, page.parent_name || 'Home')]), - m('header', m('h1', page.name)), - m('.container', { - class: this.children.length ? 'multi' : '', - }, [ - this.children.length - ? m('aside.sidebar', [ - m('h4', 'View ' + page.name + ':'), - this.children.map(function(page) { - return m(m.route.Link, { href: '/page/' + page.path }, page.name) - }), - ]) - : null, - page.content - ? m('.fr-view', [ - page.pictureFallback - ? m('a.cover', { - rel: 'noopener', - href: page.media_path, - }, [ - m('picture', [ - m('source', { - srcset: page.pictureAvif, - sizes: page.pictureCover, - type: 'image/avif', - }), - m('img', { - srcset: page.pictureJpeg, - sizes: page.pictureCover, - alt: 'Image for news item ' + page.name, - src: page.pictureFallback, - }), - ]), - ]) - : null, - page.content.blocks.map(block => { - return m(EditorBlock, { block: block }) - }), - this.data.articles.length && page.content - ? m('aside.news', [ - m('h4', 'Latest posts under ' + page.name + ':'), - this.data.articles.map(function(article) { - return m(Newsentry, { article: article }) - }), - m(Pages, { - base: '/page/' + page.path, - total: this.data.total_articles, - page: this.currentPage, - }), - ]) - : null, - ]) - : this.data.articles.length - ? m('aside.news.single', - [ - page.pictureFallback - ? m('a', { - rel: 'noopener', - href: page.media_path, - }, [ - m('picture.page-cover', [ - m('source', { - srcset: page.pictureAvif, - sizes: page.pictureCover, - type: 'image/avif', - }), - m('img', { - srcset: page.pictureJpeg, - sizes: page.pictureCover, - alt: 'Cover image for ' + page.name, - src: page.pictureFallback, - }), - ]), - ]) - : null, - m('h4', 'Latest posts under ' + page.name + ':'), - this.data.articles.map(function(article) { - return m(Newsentry, { article: article }) - }), - m(Pages, { - base: '/page/' + page.path, - total: this.data.total_articles, - page: this.currentPage, - }), - ]) - : page.media - ? m('img.page-cover.single', { src: page.media.medium_url, alt: 'Cover image for ' + page.name } ) - : null, - ]), - Authentication.currentUser - ? m('div.admin-actions', [ - m('span', 'Admin controls:'), - m(m.route.Link, { href: '/admin/pages/' + page.path }, 'Edit page'), - ]) - : null, - ]) - : null, - ]) - }, -} - -module.exports = Page diff --git a/nfp_moe_old/app/pages/page.scss b/nfp_moe_old/app/pages/page.scss deleted file mode 100644 index ad0aca5..0000000 --- a/nfp_moe_old/app/pages/page.scss +++ /dev/null @@ -1,281 +0,0 @@ -article.page { - padding-bottom: 0; - - header { - text-align: center; - margin: 20px 20px 0; - padding: 10px; - background: $secondary-bg; - width: 100%; - max-width: 1920px; - align-self: center; - - h1 { - color: $secondary-fg; - } - } - - .loading-spinner { - position: relative; - flex-grow: 2; - height: 300px; - } - - .page-banner { - background-size: cover; - background-repeat: no-repeat; - background-position: center; - height: 150px; - width: 100%; - max-width: 1920px; - align-self: center; - flex: 0 0 150px; - } - - .page-cover { - margin: 0 0 20px; - - &.single { - margin: 0 20px 20px; - padding: 0 20px; - width: calc(100% - 40px); - max-width: 800px; - flex: 2 0 0; - } - } - - .goback { - width: 100%; - max-width: 1050px; - align-self: center; - padding: 10px 5px 0; - margin-bottom: -10px; - - a { - font-weight: bold; - text-decoration: none; - color: $secondary-dark-bg; - } - } - - .admin-actions { - margin-bottom: 20px; - } - - aside.sidebar, - aside.news { - h4 { - font-size: 14px; - font-weight: bold; - margin: 0 0 10px; - } - - // a { - // display: inline-block; - // padding-top: 5px; - // text-decoration: none; - // color: $secondary-dark-bg; - // font-size: 14px; - // font-weight: bold; - // } - } - - .container { - flex-direction: column; - align-items: center; - height: auto; - padding: 20px 0; - width: 100%; - max-width: 1050px; - align-self: center; - - background: $newsitem-bg; - border-right: $newsitem-border; - border-left: $newsitem-border; - - &.multi { - align-items: flex-start; - flex-direction: row; - flex-grow: 2; - } - } - - aside.sidebar { - width: 250px; - flex: 0 0 250px; - padding: 0 10px; - margin-bottom: 10px; - - h4 { - padding: 0 5px 5px; - border-bottom: 1px solid $border; - } - - a { - padding: 5px 5px 0px; - display: block; - text-decoration: none; - color: $secondary-dark-bg; - font-size: 14px; - font-weight: bold; - } - } - - .fr-view { - margin: 0 20px; - padding: 0 20px; - width: calc(100% - 40px); - max-width: 800px; - flex: 2 0 0; - - .page-cover { - margin: 0 -10px 20px; - } - - main { - padding: 0 5px; - } - } -} - -aside.news { - border-top: 1px solid #ccc; - margin-top: 20px; - padding: 10px 10px; - margin: 0 -10px; - width: 100%; - align-self: center; - - .loading-spinner { - position: relative; - height: 133px; - } - - newsentry { - margin: 0 0 10px; - } - - &.single { - // max-width: 800px; - flex: 2 0 0; - padding: 0 20px 10px; - border-top: none; - margin-top: 0; - align-self: flex-start; - margin: 0; - - & > h4 { - padding: 0 5px 5px; - border-bottom: 1px solid $border; - } - } -} - -@media screen and (max-width: 800px){ - article.page aside.sidebar { - width: 200px; - flex: 0 0 200px; - } -} - -@media screen and (max-width: 639px){ - article.page { - padding: 0; - - .container { - flex-direction: column !important; - border: none !important; - } - - aside.sidebar { - width: calc(100% - 80px); - flex: 0 0 auto; - margin: 0px 30px 30px; - border-bottom: 1px solid $border; - padding: 0 0 5px; - } - - .news.single .page-cover { - margin: 0 0 20px; - } - } -} - -@media screen and (max-width: 360px){ - article.page { - .container { - flex-direction: column; - } - - aside { - margin: 0px 0px 10px; - } - - .fr-view { - margin: 0; - width: 100%; - padding: 0 5px; - } - } -} - -@media screen and (max-width: 480px){ - article.page aside.sidebar a { - padding: 9px 10px; - } -} - -@media (pointer:coarse) { - article.page aside.sidebar a { - padding: 9px 10px; - } -} - -.darkmodeon { - article.page { - header { - background: $dark_secondary-bg; - h1 { - color: $dark_secondary-fg; - } - } - - .container { - background: $dark_newsitem-bg; - border-right: $dark_newsitem-border; - border-left: $dark_newsitem-border; - } - - aside.sidebar { - h4 { - border-bottom: 1px solid $dark_border; - } - - a { - color: $dark_secondary-dark-bg; - } - } - - .goback a { - color: $dark_secondary-dark-bg; - } - } - - aside.news { - &.single { - & > h4 { - border-bottom: 1px solid $dark_border; - } - } - } - - @media screen and (max-width: 639px){ - article.page aside.sidebar { - border-bottom: 1px solid $dark_border; - } - } - - .goback a { - color: $dark_secondary-dark-bg; - } -} diff --git a/nfp_moe_old/app/polyfill.js b/nfp_moe_old/app/polyfill.js deleted file mode 100644 index f9db4ec..0000000 --- a/nfp_moe_old/app/polyfill.js +++ /dev/null @@ -1,8 +0,0 @@ -if (!String.prototype.endsWith) { - String.prototype.endsWith = function(search, this_len) { - if (this_len === undefined || this_len > this.length) { - this_len = this.length; - } - return this.substring(this_len - search.length, this_len) === search; - }; -} diff --git a/nfp_moe_old/app/widgets/admin.scss b/nfp_moe_old/app/widgets/admin.scss deleted file mode 100644 index 9edc89a..0000000 --- a/nfp_moe_old/app/widgets/admin.scss +++ /dev/null @@ -1,133 +0,0 @@ - -fileupload { - position: relative; - display: flex; - align-items: stretch; - flex-direction: column; - justify-content: stretch; - - .showicon, - .showbordericon, - .display { - flex-grow: 2; - } - - .showbordericon { - border: 3px solid $title-fg; - border-style: dashed; - background-image: url('./img/upload.svg'); - background-position: center; - background-repeat: no-repeat; - background-size: 50px; - } - - .showicon { - position: absolute; - top: 5px; - right: 5px; - width: 50px; - height: 50px; - background-image: url('./img/upload.svg'); - background-position: center; - background-repeat: no-repeat; - background-size: contain; - } - - img { - max-width: 600px; - width: 100%; - align-self: center; - min-height: 100px; - } - - .display { - background-size: cover; - background-repeat: no-repeat; - background-position: center; - } - - .loading-spinner { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #33333388; - width: 100%; - } - - input { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - opacity: 0.01; - width: 100%; - cursor: pointer; - text-indent: -9999px; - z-index: 2; - } - - .remove { - border: none; - position: absolute; - top: 5px; - right: 60px; - width: 50px; - height: 50px; - background-image: url('./img/delete.svg'); - background-position: center; - background-repeat: no-repeat; - background-color: transparent; - background-size: contain; - z-index: 3; - outline: none; - cursor: pointer; - } -} - -dialogue { - background: white; - display: flex; - flex-direction: column; - text-align: center; - width: calc(100% - 40px); - max-width: 500px; - color: $main-fg; - - h2 { - background: $secondary-dark-bg; - color: $secondary-dark-fg; - font-size: 1.5em; - padding: 10px; - } - - p { - padding: 10px; - } - - .buttons { - display: flex; - justify-content: space-around; - padding: 10px; - } - - button { - border: 1px solid $secondary-dark-bg; - background: transparent; - color: $secondary-dark-bg; - padding: 5px 15px; - min-width: 150px; - } - - button.alert { - border-color: red; - color: red; - } - - button.cancel { - border-color: #999; - color: #999; - } -} diff --git a/nfp_moe_old/app/widgets/common.scss b/nfp_moe_old/app/widgets/common.scss deleted file mode 100644 index 39d9196..0000000 --- a/nfp_moe_old/app/widgets/common.scss +++ /dev/null @@ -1,321 +0,0 @@ - -newsentry { - display: flex; - color: $meta-fg; - font-size: 12px; - - .title { - display: flex; - margin-bottom: 10px !important; - - a { - text-decoration: none; - color: $secondary-dark-bg; - font-size: 14px; - font-weight: bold; - } - } - - a.cover { - flex-shrink: 0; - margin-right: 10px; - width: 124px; - text-align: center; - - img { - max-height: 70px; - width: auto; - } - } - - a.nobg { - height: 70px; - width: 124px; - background: #ddd; - } - - .entrycontent { - display: flex; - flex-direction: column; - flex: 2 1 auto; - padding: 0 5px 5px; - - h3 { - margin-bottom: 0 !important; - font-size: 1.3em; - font-weight: bold; - } - } - - .entrymeta { - font-size: 10px; - color: $meta-fg; - font-weight: bold; - display: none; - } -} - -fileinfo { - padding: 0 5px; - margin-bottom: 5px; - display: flex; - flex-direction: column; - - &.slim { - padding: 0; - margin: 0; - } - - .filetitle { - display: block; - line-height: 16px; - - .prefix { - font-weight: bold; - margin-right: 5px; - } - - a { - color: $secondary-dark-bg; - font-weight: bold; - text-decoration: none; - padding-right: 5px; - border-right: 1px solid $border; - margin-right: 5px; - display: inline-block; - } - } - - .trimmed { - padding: 3px 0 5px 25px; - } - - ul { - margin: 10px 0; - padding-left: 0; - list-style-type: disc; - list-style-position: inside; - - li { - padding-left: 20px; - } - } -} - -@media screen and (max-width: 480px){ - fileinfo, - fileinfo.slim { - padding: 8px 5px; - justify-content: center; - } -} - -@media (pointer:coarse) { - fileinfo, - fileinfo.slim { - padding: 8px 5px; - justify-content: center; - } -} - -newsitem { - display: flex; - flex-direction: column; - font-size: 15px; - background: $newsitem-bg; - border: $newsitem-border; - - .title { - text-decoration: none; - background: $secondary-bg; - color: $secondary-fg; - font-size: 1.2em; - font-weight: bold; - text-align: center; - padding: 5px 10px; - margin-bottom: 10px; - } - - .newsitemcontent { - display: flex; - } - - a.cover { - flex-shrink: 0; - margin-right: 10px; - width: 400px; - text-align: center; - - picture { - max-height: 400px; - max-width: 400px; - width: auto; - } - } - - a.nobg { - height: 225px; - width: 400px; - background: #ddd; - } - - .entrycontent { - display: flex; - flex-direction: column; - flex: 2 1 auto; - padding: 0 5px 5px; - - &.extrapadding { - padding: 0 15px 5px; - } - - h3 { - margin-bottom: 0 !important; - font-size: 1.3em; - font-weight: bold; - } - - .fr-view { - margin-bottom: 10px; - } - - fileinfo { - font-size: 0.8em; - } - } - - .entrymeta { - flex-grow: 2; - font-size: 11px; - color: $meta-fg; - font-weight: bold; - padding: 10px 0; - - a { - color: $secondary-dark-bg; - margin: 0 5px; - text-decoration: none; - } - } -} - -pages { - display: flex; - justify-content: center; - width: 100%; - - a, div { - display: block; - font-size: 0.9em; - max-width: 80px; - flex-grow: 2; - text-align: center; - padding: 10px !important; - margin-top: 10px; - } - - a { - color: $secondary-dark-bg; - cursor: pointer; - } -} - -@media screen and (max-width: 1000px){ - newsitem a.cover { - width: 300px; - - picture { - max-width: 300px; - width: auto; - } - } -} - -@media screen and (max-width: 639px){ - newsitem { - a.cover { - width: 100%; - margin-bottom: 20px; - - picture { - max-height: unset; - max-width: unset; - width: 100%; - } - } - - .newsitemcontent { - flex-direction: column; - } - - .entrycontent.extrapadding { - padding: 0 5px 5px; - } - } -} - -@media screen and (max-width: 440px){ - newsentry { - flex-direction: column; - align-items: center; - - a.cover { - margin: 0 0 15px; - width: 100%; - - img { - max-height: unset; - width: 100%; - } - } - } -} - -.darkmodeon { - newsentry { - color: $dark_meta-fg; - - .title { - a { - color: $dark_secondary-dark-bg; - } - } - - .entrymeta { - color: $dark_meta-fg; - } - } - - fileinfo { - .filetitle { - a { - color: $dark_secondary-dark-bg; - border-right: 1px solid $dark_border; - } - } - } - - newsitem { - background: $dark_newsitem-bg; - border: $dark_newsitem-border; - - .title { - background: $dark_secondary-bg; - color: $dark_secondary-fg; - } - - .entrymeta { - color: $dark_meta-fg; - - a { - color: $dark_secondary-dark-bg; - } - } - } - - pages { - a { - color: $dark_secondary-dark-bg; - } - } -} diff --git a/nfp_moe_old/app/widgets/dialogue.js b/nfp_moe_old/app/widgets/dialogue.js deleted file mode 100644 index e2ac9a1..0000000 --- a/nfp_moe_old/app/widgets/dialogue.js +++ /dev/null @@ -1,17 +0,0 @@ -const Dialogue = { - view: function(vnode) { - return m('div.floating-container', { - hidden: vnode.attrs.hidden, - }, m('dialogue', [ - m('h2', vnode.attrs.title), - m('p', vnode.attrs.message), - m('div.buttons', [ - m('button', { class: vnode.attrs.yesclass || '', onclick: vnode.attrs.onyes }, vnode.attrs.yes), - m('button', { class: vnode.attrs.noclass || '', onclick: vnode.attrs.onno }, vnode.attrs.no), - ]), - ]) - ) - }, -} - -module.exports = Dialogue diff --git a/nfp_moe_old/app/widgets/editorblock.js b/nfp_moe_old/app/widgets/editorblock.js deleted file mode 100644 index 08e74a4..0000000 --- a/nfp_moe_old/app/widgets/editorblock.js +++ /dev/null @@ -1,61 +0,0 @@ -/* -Blocks: - * Paragraph - * Header - * SimpleImage - * Quote - * CodeTool - * List - * Delimiter - * RawTool - -Other: - * InlineCode -*/ - -const EditorBlock = { - oninit: function(vnode) { - this.id = null - this.output = null - this.onbeforeupdate(vnode) - }, - - onbeforeupdate: function(vnode) { - if (!vnode.attrs.block && !this.id) { - return false - } - if (vnode.attrs.block && vnode.attrs.block.id - && vnode.attrs.block.id === this.id) { - return false - } - - if (vnode.attrs.block && vnode.attrs.block.id - && vnode.attrs.block.id !== this.id) { - this.renderblock(vnode) - } else { - this.output = null - } - }, - - renderblock: function(vnode) { - let block = vnode.attrs.block - this.id = block.id - switch (block.type) { - case 'paragraph': - this.output = m('p', m.trust(block.data.text)) - break - case 'htmlraw': - this.output = m.trust(block.data.html) - break - default: - this.output = m('p', m.trust(block)) - break - } - }, - - view: function(vnode) { - return this.output - } -} - -module.exports = EditorBlock diff --git a/nfp_moe_old/app/widgets/fileinfo.js b/nfp_moe_old/app/widgets/fileinfo.js deleted file mode 100644 index 854dc60..0000000 --- a/nfp_moe_old/app/widgets/fileinfo.js +++ /dev/null @@ -1,92 +0,0 @@ -const Fileinfo = { - getPrefix: function(vnode) { - if (!vnode.attrs.file.filename.endsWith('.torrent')) { - return vnode.attrs.file.filename.split('.').slice(-1) - } - if (vnode.attrs.file.filename.indexOf('720 ') >= 0) { - return '720p' - } - if (vnode.attrs.file.filename.indexOf('1080 ') >= 0) { - return '1080p' - } - if (vnode.attrs.file.filename.indexOf('480 ') >= 0) { - return '480p' - } - if (vnode.attrs.file.filename.toLowerCase().indexOf('flac') >= 0) { - return 'FLAC' - } - if (vnode.attrs.file.filename.toLowerCase().indexOf('mp3') >= 0) { - return 'MP3' - } - if (vnode.attrs.file.filename.toLowerCase().indexOf('psd') >= 0) { - return 'PSD' - } - if (vnode.attrs.file.filename.toLowerCase().indexOf('.zip') >= 0) { - return 'ZIP' - } - return 'Other' - }, - - getTitle: function(vnode) { - if (vnode.attrs.file.meta.torrent) { - return vnode.attrs.file.meta.torrent.name - } - return vnode.attrs.file.filename - }, - - getDownloadName: function(vnode) { - if (vnode.attrs.file.meta.torrent) { - return 'Torrent' - } - return 'Download' - }, - - getSize: function(orgSize) { - var size = orgSize - var i = -1 - var byteUnits = [' kB', ' MB', ' GB', ' TB', 'PB', 'EB', 'ZB', 'YB'] - do { - size = size / 1024 - i++ - } while (size > 1024) - - return Math.max(size, 0.1).toFixed(1) + byteUnits[i] - }, - - view: function(vnode) { - return m('fileinfo', { class: vnode.attrs.slim ? 'slim' : ''}, [ - m('div.filetitle', [ - m('span.prefix', this.getPrefix(vnode) + ':'), - m('a', { - target: '_blank', - rel: 'noopener', - href: vnode.attrs.file.url, - }, this.getDownloadName(vnode)), - vnode.attrs.file.magnet - ? m('a', { - href: vnode.attrs.file.magnet, - }, 'Magnet') - : null, - m('span', this.getTitle(vnode)), - ]), - vnode.attrs.file.meta.torrent - && !vnode.attrs.slim - && vnode.attrs.file.meta.torrent.files.length > 1 - && (!vnode.attrs.trim || vnode.attrs.file.meta.torrent.files.length <= 4) - ? m('ul', vnode.attrs.file.meta.torrent.files.map(function(file) { - return m('li', [ - file.name + ' ', - m('span.meta', '(' + Fileinfo.getSize(file.size) + ')'), - ]) - })) - : null, - vnode.attrs.trim - && vnode.attrs.file.meta.torrent - && vnode.attrs.file.meta.torrent.files.length > 4 - ? m('div.trimmed', '...' + vnode.attrs.file.meta.torrent.files.length + ' files...') - : null, - ]) - }, -} - -module.exports = Fileinfo diff --git a/nfp_moe_old/app/widgets/fileupload.js b/nfp_moe_old/app/widgets/fileupload.js deleted file mode 100644 index 31391ac..0000000 --- a/nfp_moe_old/app/widgets/fileupload.js +++ /dev/null @@ -1,64 +0,0 @@ - -const FileUpload = { - fileChanged: function(vnode, event) { - if (!event.target.files[0]) return - - let preview = null - if (event.target.files[0].type.startsWith('image')) { - preview = URL.createObjectURL(event.target.files[0]) - } - if (this.preview) { - this.preview.clear() - } - - let out = { - file: event.target.files[0], - preview: preview, - clear: function() { - URL.revokeObjectURL(preview) - } - } - - this.preview = out - - vnode.attrs.onfile(out) - }, - - oninit: function(vnode) { - this.loading = false - this.preview = null - }, - - view: function(vnode) { - let media = vnode.attrs.media - - return m('fileupload', { - class: vnode.attrs.class || null, - }, [ - this.preview || media - ? vnode.attrs.useimg - ? [ m('img', { src: this.preview && this.preview.preview || media }), m('div.showicon')] - : m('a.display.inside', { - href: this.preview && this.preview.preview || media, - style: { - 'background-image': 'url("' + (this.preview && this.preview.preview || media) + '")', - }, - }, m('div.showicon')) - : m('div.inside.showbordericon') - , - m('input', { - accept: 'image/*', - type: 'file', - onchange: this.fileChanged.bind(this, vnode), - }), - media && vnode.attrs.ondelete - ? m('button.remove', { onclick: vnode.attrs.ondelete }) - : null, - this.loading - ? m('div.loading-spinner') - : null, - ]) - }, -} - -module.exports = FileUpload diff --git a/nfp_moe_old/app/widgets/newsentry.js b/nfp_moe_old/app/widgets/newsentry.js deleted file mode 100644 index f0ca51a..0000000 --- a/nfp_moe_old/app/widgets/newsentry.js +++ /dev/null @@ -1,99 +0,0 @@ -const Fileinfo = require('./fileinfo') - -const Newsentry = { - oninit: function(vnode) { - this.lastId = null - this.onbeforeupdate(vnode) - }, - - strip: function(html) { - var doc = new DOMParser().parseFromString(html, 'text/html') - var out = doc.body.textContent || '' - var splitted = out.split('.') - if (splitted.length > 2) { - return splitted.slice(0, 2).join('.') + '...' - } - return out - }, - - onbeforeupdate: function(vnode) { - let article = vnode.attrs.article - - if (this.lastId !== article.id) { - this.lastId = article.id - this.description = null - - for (let i = 0; i < article.content.blocks.length; i++) { - if (article.content.blocks[i].type === 'paragraph') { - this.description = article.content.blocks[i].data.text - break - } else if (article.content.blocks[i].type === 'htmlraw') { - this.description = this.strip(article.content.blocks[i].data.html) - break - } - } - - if (article.media_alt_prefix) { - this.pictureFallback = article.media_alt_prefix + '_small.jpg' - this.pictureJpeg = article.media_alt_prefix + '_small.jpg' + ' 720w, ' - + article.media_alt_prefix + '_medium.jpg' + ' 1300w, ' - + article.media_alt_prefix + '_large.jpg 1920w' - this.pictureAvif = article.media_alt_prefix + '_small.avif' + ' 720w, ' - + article.media_alt_prefix + '_medium.avif' + ' 1300w, ' - + article.media_alt_prefix + '_large.avif 1920w' - - this.pictureCover = '(max-width: 440px) calc(100vw - 40px), ' - + '124px' - } else { - this.pictureFallback = null - this.pictureJpeg = null - this.pictureAvif = null - this.pictureCover = null - } - } - }, - - view: function(vnode) { - let article = vnode.attrs.article - - return m('newsentry', [ - this.pictureFallback - ? m(m.route.Link, { - class: 'cover', - href: '/article/' + article.path, - }, - m('picture', [ - m('source', { - srcset: this.pictureAvif, - sizes: this.pictureCover, - type: 'image/avif', - }), - m('img', { - srcset: this.pictureJpeg, - sizes: this.pictureCover, - alt: 'Image for news item ' + article.name, - src: this.pictureFallback, - }), - ]) - ) - : m('a.cover.nobg'), - m('div.entrycontent', [ - m('div.title', [ - m(m.route.Link, - { href: '/article/' + article.path }, - m('h3', [article.name]) - ), - ]), - (article.files && article.files.length - ? article.files.map(function(file) { - return m(Fileinfo, { file: file, slim: true }) - }) - : this.description - ? m('span.entrydescription', this.description) - : null), - ]), - ]) - }, -} - -module.exports = Newsentry diff --git a/nfp_moe_old/app/widgets/newsitem.js b/nfp_moe_old/app/widgets/newsitem.js deleted file mode 100644 index fb4b7f5..0000000 --- a/nfp_moe_old/app/widgets/newsitem.js +++ /dev/null @@ -1,88 +0,0 @@ -const Fileinfo = require('./fileinfo') -const EditorBlock = require('./editorblock') - -const Newsitem = { - oninit: function(vnode) { - this.lastId = null - this.onbeforeupdate(vnode) - }, - - onbeforeupdate: function(vnode) { - let article = vnode.attrs.article - - if (this.lastId !== article.id) { - this.lastId = article.id - - if (article.media_alt_prefix) { - this.pictureFallback = article.media_alt_prefix + '_small.jpg' - this.pictureJpeg = article.media_alt_prefix + '_small.jpg' + ' 720w, ' - + article.media_alt_prefix + '_medium.jpg' + ' 1300w, ' - + article.media_alt_prefix + '_large.jpg 1920w' - this.pictureAvif = article.media_alt_prefix + '_small.avif' + ' 720w, ' - + article.media_alt_prefix + '_medium.avif' + ' 1300w, ' - + article.media_alt_prefix + '_large.avif 1920w' - - this.pictureCover = '(max-width: 639px) calc(100vw - 40px), ' - + '(max-width: 1000px) 300px, ' - + '400px' - } else { - this.pictureFallback = null - this.pictureJpeg = null - this.pictureAvif = null - this.pictureCover = null - } - } - }, - - view: function(vnode) { - let article = vnode.attrs.article - - return m('newsitem', [ - m(m.route.Link, - { href: '/article/' + article.path, class: 'title' }, - m('h3', [article.name]) - ), - m('div.newsitemcontent', [ - this.pictureFallback - ? m(m.route.Link, { - class: 'cover', - href: '/article/' + article.path, - }, - m('picture', [ - m('source', { - srcset: this.pictureAvif, - sizes: this.pictureCover, - type: 'image/avif', - }), - m('img', { - srcset: this.pictureJpeg, - sizes: this.pictureCover, - alt: 'Image for news item ' + article.name, - src: this.pictureFallback, - }), - ]) - ) - : null, - m('div.entrycontent', [ - article.content.blocks.map(block => { - return m(EditorBlock, { block: block }) - }), - (article.files && article.files.length - ? article.files.map(function(file) { - return m(Fileinfo, { file: file, trim: true }) - }) - : null), - m('span.entrymeta', [ - 'Posted ', - (article.page_path ? 'in' : ''), - (article.page_path ? m(m.route.Link, { href: '/page/' + article.page_path }, article.page_name) : null), - 'at ' + (article.publish_at.replace('T', ' ').split('.')[0]).substr(0, 16), - ' by ' + (article.admin_name || 'Admin'), - ]), - ]), - ]), - ]) - }, -} - -module.exports = Newsitem diff --git a/nfp_moe_old/app/widgets/pages.js b/nfp_moe_old/app/widgets/pages.js deleted file mode 100644 index 50807c4..0000000 --- a/nfp_moe_old/app/widgets/pages.js +++ /dev/null @@ -1,44 +0,0 @@ -const Pages = { - oninit: function(vnode) { - this.onbeforeupdate(vnode) - }, - - onbeforeupdate: function(vnode) { - this.total = vnode.attrs.total - this.currentPage = vnode.attrs.page - this.perPage = vnode.attrs.perPage || 10 - this.maxPage = this.total / this.perPage + 1 - }, - - view: function(vnode) { - if (this.total <= this.perPage) return null - return m('pages', [ - this.currentPage > 1 - ? [ - m(m.route.Link, { - href: vnode.attrs.base, - }, 'First'), - m(m.route.Link, { - href: vnode.attrs.base + (this.currentPage > 2 - ? '?page=' + (this.currentPage - 1) - : '' - ), - }, 'Previous'), - ] - : m('div'), - m('div', 'Page ' + this.currentPage), - this.currentPage < this.maxPage - ? [ - m(m.route.Link, { - href: vnode.attrs.base + '?page=' + (this.currentPage + 1), - }, 'Next'), - m(m.route.Link, { - href: vnode.attrs.base + '?page=' + this.maxPage, - }, 'Last') - ] - : m('div'), - ]) - }, -} - -module.exports = Pages diff --git a/nfp_moe_old/base b/nfp_moe_old/base deleted file mode 120000 index 24312d1..0000000 --- a/nfp_moe_old/base +++ /dev/null @@ -1 +0,0 @@ -../base \ No newline at end of file diff --git a/nfp_moe_old/dev.mjs b/nfp_moe_old/dev.mjs deleted file mode 100644 index 141c7d5..0000000 --- a/nfp_moe_old/dev.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import fs from 'fs' -import { ServiceCore } from 'service-core' -import * as index from './index.mjs' - -var core = new ServiceCore('nfp_moe', import.meta.url, 4030, '') - -let config = { - frontend: { - url: 'http://localhost:4030' - } -} - -try { - config = JSON.parse(fs.readFileSync('./config.json')) -} catch {} - -config.port = 4030 - -core.setConfig(config) -core.init(index).then(function() { - return core.run() -}) \ No newline at end of file diff --git a/nfp_moe_old/index.mjs b/nfp_moe_old/index.mjs deleted file mode 100644 index d23ba90..0000000 --- a/nfp_moe_old/index.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import config from '../base/config.mjs' - -export function start(http, port, ctx) { - config.stores.overrides.store = ctx.config - - return import('./api/server.mjs') - .then(function(module) { - let server = new module.default(http, port, ctx) - return server.run() - }) -} diff --git a/nfp_moe_old/package.json b/nfp_moe_old/package.json deleted file mode 100644 index 1c6e71e..0000000 --- a/nfp_moe_old/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "nfp_moe", - "version": "2.0.0", - "description": "NFP Moe website", - "main": "index.js", - "directories": { - "test": "test" - }, - "scripts": { - "start": "node --experimental-modules index.mjs", - "test": "echo \"Error: no test specified\" && exit 1", - "build:prod": "sass -s compressed app/app.scss public/assets/app.css && sass -s compressed app/admin.scss public/assets/admin.css && asbundle app/index.js public/assets/app.js && asbundle app/admin.js public/assets/admin.js", - "build": "sass app/app.scss public/assets/app.css && sass app/admin.scss public/assets/admin.css && asbundle app/index.js public/assets/app.js && asbundle app/admin.js public/assets/admin.js", - "dev:build": "npm-watch build", - "dev:server": "node dev.mjs | bunyan", - "dev": "npm-watch dev:server", - "watch:sass:public": "sass --watch app/app.scss public/assets/app.css", - "watch:sass:admin": "sass --watch app/admin.scss public/assets/admin.css", - "prod": "npm run build && npm start", - "temp": "asbundle" - }, - "watch": { - "dev:server": { - "patterns": [ - "api/*", - "base/*", - "../base/*" - ], - "extensions": "js,mjs", - "quiet": true, - "inherit": true - }, - "build": { - "patterns": [ - "app/*" - ], - "extensions": "js,mjs,scss", - "quiet": true, - "inherit": true - } - }, - "repository": { - "type": "git", - "url": "https://github.com/nfp-projects/nfp_moe.git" - }, - "author": "Jonatan Nilsson", - "license": "WTFPL", - "bugs": { - "url": "https://github.com/nfp-projects/nfp_moe/issues" - }, - "homepage": "https://github.com/nfp-projects/nfp_moe", - "dependencies": { - "@editorjs/quote": "^2.4.0", - "bencode": "^2.0.3", - "dot": "^2.0.0-beta.1", - "flaska": "^1.3.0", - "format-link-header": "^2.1.0", - "formidable": "^1.2.6", - "msnodesqlv8": "^2.4.7", - "nconf-lite": "^1.0.1", - "striptags": "^3.1.1" - }, - "devDependencies": { - "asbundle": "^2.6.1", - "mithril": "^2.2.2", - "sass": "^1.52.3", - "service-core": "^3.0.0-beta.17" - } -} diff --git a/nfp_moe_old/public/assets/Inter.var.woff2 b/nfp_moe_old/public/assets/Inter.var.woff2 deleted file mode 100644 index 365eedc..0000000 Binary files a/nfp_moe_old/public/assets/Inter.var.woff2 and /dev/null differ diff --git a/nfp_moe_old/public/assets/admin.css b/nfp_moe_old/public/assets/admin.css deleted file mode 100644 index d0a58d7..0000000 --- a/nfp_moe_old/public/assets/admin.css +++ /dev/null @@ -1,588 +0,0 @@ -/* Dark theme */ -.error { - font-size: 0.8em; - color: #bb4d00; - font-weight: bold; - padding-bottom: 20px; -} - -.admin-wrapper table { - width: calc(100% - 20px); - margin: 10px; - border: solid 1px #01579b; - border-collapse: collapse; - border-spacing: 0; - font-size: 0.8em; - position: relative; -} -.admin-wrapper table thead th { - background-color: #3D77C7; - border: solid 1px #01579b; - color: white; - padding: 10px; - text-align: left; -} -.admin-wrapper table tbody td { - text-align: left; - border: solid 1px #01579b; - color: #333; - padding: 10px; -} -.admin-wrapper table a, -.admin-wrapper table a:visited, -.admin-wrapper table a:hover { - text-decoration: none; - color: #bb4d00; - font-weight: bold; -} -.admin-wrapper table button { - color: #bb4d00; - background: transparent; - border: 1px solid #bb4d00; -} -.admin-wrapper table td.right, -.admin-wrapper table th.right { - text-align: right; -} - -.floating-container { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: rgba(0, 0, 0, 0.6); - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -.input-row { - display: flex; -} -.input-row > * { - margin-right: 1rem; - flex: 2 1 auto; -} -.input-row > .small { - flex: 0 0 auto; -} -.input-row > *:last-child { - margin-right: 0; -} - -.admin-wrapper .loading-spinner { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.4); - z-index: 1000; -} - -.admin-wrapper { - flex-grow: 2; - display: flex; - flex-direction: column; - background: #01579b; - padding: 0 20px 50px; -} - -.admin-actions { - background: #01579b; - display: flex; - justify-content: center; - min-height: 37px; -} -.admin-actions span { - color: white; - padding: 10px; - font-size: 14px; - font-weight: bold; -} -.admin-actions a { - padding: 10px; - text-decoration: none; - color: #ffad42; - font-size: 14px; - font-weight: bold; -} - -.fr-box, -.fr-toolbar, -.fr-box .second-toolbar { - border-radius: 0 !important; -} - -article.editpage { - text-align: center; - background: white; - padding: 0 0 20px; -} -article.editpage header { - padding: 10px; - background: #f57c00; -} -article.editpage header h1 { - color: black; -} -article.editpage header a { - font-size: 14px; - text-decoration: none; - margin-left: 10px; - color: black; -} -article.editpage fileupload { - margin: 0 0 20px; -} -article.editpage fileupload .inside { - height: 150px; -} -article.editpage fileupload.cover { - align-self: center; - min-width: 178px; -} -article.editpage fileupload.cover .display { - background-size: auto 100%; -} -article.editpage form { - padding: 0 40px 20px; -} -article.editpage form textarea { - height: 300px; -} -article.editpage form .loading-spinner { - height: 300px; - position: relative; -} -article.editpage h5 { - margin-bottom: 20px; -} -article.editpage > .loading-spinner { - width: 240px; - height: 50px; - position: relative; -} - -table span.subpage { - padding: 0 5px; -} - -article.editarticle { - background: white; - padding: 0 0 20px; -} -article.editarticle header { - text-align: center; - padding: 10px; - background: #f57c00; -} -article.editarticle header h1 { - color: black; -} -article.editarticle header a { - font-size: 14px; - text-decoration: none; - margin-left: 10px; - color: black; -} -article.editarticle fileupload { - margin: 0 0 20px; -} -article.editarticle fileupload .inside { - height: 150px; -} -article.editarticle fileupload.cover { - align-self: center; - min-width: 178px; -} -article.editarticle form { - padding: 0 2rem 1rem; -} -article.editarticle form textarea { - height: 300px; -} -article.editarticle form label.slim { - font-size: 0.7em; -} -article.editarticle form input.slim { - font-size: 0.8em; - padding: 2px 5px; -} -article.editarticle form .loading-spinner { - height: 300px; - position: relative; -} -article.editarticle form button.submit { - margin-left: 20px; -} -article.editarticle table tr.rowhidden td { - background: #e6e6e6; -} -article.editarticle table tr.rowfeatured td { - background: hsl(120deg, 60%, 85%); -} -article.editarticle h5 { - margin-bottom: 20px; -} -article.editarticle > .loading-spinner { - width: 240px; - height: 50px; - position: relative; -} -article.editarticle > .loading-spinner.full { - width: 100%; -} -article.editarticle .fileupload { - align-self: flex-start; - padding: 0.5rem; - margin: 0.5rem 0 0.5rem 2rem; - min-width: 150px; - border: none; - border: 1px solid #f57c00; - background: #ffad42; - color: black; - position: relative; - text-align: center; -} -article.editarticle .fileupload input { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - opacity: 0.01; - width: 100%; - cursor: pointer; - text-indent: -9999px; - z-index: 2; -} -article.editarticle files { - align-items: stretch; - width: 100%; - display: flex; - flex-direction: column; - padding: 1rem 2rem 0; - text-align: left; -} -article.editarticle files h4 { - font-size: 1.1em; - font-weight: bold; - padding: 0 5px 5px; - margin-bottom: 10px; - border-bottom: 1px solid #ccc; -} - -table span.subarticle { - padding: 0 5px; -} - -article.editstaff { - text-align: center; - background: white; - padding: 0 0 20px; -} -article.editstaff header { - padding: 10px; - background: #f57c00; -} -article.editstaff header h1 { - color: black; -} -article.editstaff header a { - font-size: 14px; - text-decoration: none; - margin-left: 10px; - color: black; -} -article.editstaff form { - padding: 0 40px 20px; -} -article.editstaff form textarea { - height: 300px; -} -article.editstaff form .loading-spinner { - height: 300px; - position: relative; -} -article.editstaff h5 { - margin-bottom: 20px; -} -article.editstaff > .loading-spinner { - width: 240px; - height: 50px; - position: relative; -} -article.editstaff > .loading-spinner.full { - width: 100%; -} - -.date-selector-wrapper { - width: 200px; - padding: 3px; - background-color: #fff; - box-shadow: 1px 1px 10px 1px #5c5c5c; - position: absolute; - font-size: 12px; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - z-index: 10; - /* user-select: none; */ -} - -.cal-header, .cal-row { - display: flex; - width: 100%; - height: 30px; - line-height: 30px; - text-align: center; -} - -.cal-cell, .cal-nav { - cursor: pointer; -} - -.cal-day-names { - height: 25px; - line-height: 25px; -} - -.cal-day-names .cal-cell { - cursor: default; - font-weight: bold; -} - -.cal-cell-prev, .cal-cell-next { - color: #777; -} - -.cal-months .cal-row, .cal-years .cal-row { - height: 60px; - line-height: 60px; -} - -.cal-nav-prev, .cal-nav-next { - flex: 0.15; -} - -.cal-nav-current { - flex: 0.75; - font-weight: bold; -} - -.cal-months .cal-cell, .cal-years .cal-cell { - flex: 0.25; -} - -.cal-days .cal-cell { - flex: 0.143; -} - -.cal-value { - color: #fff; - background-color: #286090; -} - -.cal-cell:hover, .cal-nav:hover { - background-color: #eee; -} - -.cal-value:hover { - background-color: #204d74; -} - -/* time footer */ -.cal-time { - display: flex; - justify-content: flex-start; - height: 27px; - line-height: 27px; -} - -.cal-time-label, .cal-time-value { - flex: 0.12; - text-align: center; -} - -.cal-time-slider { - flex: 0.77; - background-image: linear-gradient(to right, #d1d8dd, #d1d8dd); - background-repeat: no-repeat; - background-size: 100% 1px; - background-position: left 50%; - height: 100%; -} - -.cal-time-slider input { - width: 100%; - -webkit-appearance: none; - background: 0 0; - cursor: pointer; - height: 100%; - outline: 0; - user-select: auto; -} - -.ce-block__content, -.ce-toolbar__content { - max-width: calc(100% - 120px) !important; -} - -.cdx-block { - max-width: 100% !important; -} - -.codex-editor { - border: 1px solid var(--input-border); - background: var(--input-bg); - color: var(--input-fg); -} - -.codex-editor:hover, -.codex-editor:active { - border-color: var(--secondary-bg); -} - -fileupload { - position: relative; - display: flex; - align-items: stretch; - flex-direction: column; - justify-content: stretch; -} -fileupload .showicon, -fileupload .showbordericon, -fileupload .display { - flex-grow: 2; -} -fileupload .showbordericon { - border: 3px solid #555; - border-style: dashed; - background-image: url("./img/upload.svg"); - background-position: center; - background-repeat: no-repeat; - background-size: 50px; -} -fileupload .showicon { - position: absolute; - top: 5px; - right: 5px; - width: 50px; - height: 50px; - background-image: url("./img/upload.svg"); - background-position: center; - background-repeat: no-repeat; - background-size: contain; -} -fileupload img { - max-width: 600px; - width: 100%; - align-self: center; - min-height: 100px; -} -fileupload .display { - background-size: cover; - background-repeat: no-repeat; - background-position: center; -} -fileupload .loading-spinner { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(51, 51, 51, 0.5333333333); - width: 100%; -} -fileupload input { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - opacity: 0.01; - width: 100%; - cursor: pointer; - text-indent: -9999px; - z-index: 2; -} -fileupload .remove { - border: none; - position: absolute; - top: 5px; - right: 60px; - width: 50px; - height: 50px; - background-image: url("./img/delete.svg"); - background-position: center; - background-repeat: no-repeat; - background-color: transparent; - background-size: contain; - z-index: 3; - outline: none; - cursor: pointer; -} - -dialogue { - background: white; - display: flex; - flex-direction: column; - text-align: center; - width: calc(100% - 40px); - max-width: 500px; - color: black; -} -dialogue h2 { - background: #bb4d00; - color: white; - font-size: 1.5em; - padding: 10px; -} -dialogue p { - padding: 10px; -} -dialogue .buttons { - display: flex; - justify-content: space-around; - padding: 10px; -} -dialogue button { - border: 1px solid #bb4d00; - background: transparent; - color: #bb4d00; - padding: 5px 15px; - min-width: 150px; -} -dialogue button.alert { - border-color: red; - color: red; -} -dialogue button.cancel { - border-color: #999; - color: #999; -} - -.codex-editor { - margin-bottom: 0.5rem; -} - -input[type=checkbox] { - display: block; - height: 20px; - margin: 0.5rem 0; - width: 20px; -} - -.darkmodeon .maincontainer .admin-wrapper { - color: black; -} -.darkmodeon .error { - color: #e05e00; -} - -/*# sourceMappingURL=admin.css.map */ diff --git a/nfp_moe_old/public/assets/admin.css.map b/nfp_moe_old/public/assets/admin.css.map deleted file mode 100644 index 56b1282..0000000 --- a/nfp_moe_old/public/assets/admin.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["../../app/_common.scss","../../app/admin.scss","../../app/admin/admin.scss","../../app/admin/pages.scss","../../app/admin/articles.scss","../../app/admin/staff.scss","../../app/widgets/admin.scss"],"names":[],"mappings":"AAiCA;AC/BA;EACE;EACA,ODSkB;ECRlB;EACA;;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,kBDnBe;ECoBf;EACA,ODpBe;ECqBf;EACA;;AAEF;EACE;EACA;EACA,ODhBO;ECiBP;;AAEF;AAAA;AAAA;EAGE;EACA,OD1BgB;EC2BhB;;AAGF;EACE,OD/BgB;ECgChB;EACA;;AAGF;AAAA;EAEE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKF;EACE;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AC7FF;EACE;EACA;EACA;EACA,YFJW;EEKX;;;AAGF;EACE,YFTW;EEUX;EACA;EACA;;AAEA;EACE,OFdS;EEeT;EACA;EACA;;AAGF;EACE;EACA;EACA,OFdiB;EEejB;EACA;;;AAIJ;AAAA;AAAA;EAGE;;;ACjCF;EACE;EACA;EACA;;AAEA;EACE;EACA,YHCW;;AGCX;EACE,OHDS;;AGIX;EACE;EACA;EACA;EACA,OHNe;;AGUnB;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;;;AC/DF;EACE;EACA;;AAEA;EACE;EACA;EACA,YJCW;;AICX;EACE,OJDS;;AIIX;EACE;EACA;EACA;EACA,OJNe;;AIUnB;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAGF;EACE;;AAEA;EACE;;AAGF;EACE;;AAEF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAIJ;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA,YJhFiB;EIiFjB,OJhFiB;EIiFjB;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;;AAKN;EACE;;;AChIF;EACE;EACA;EACA;;AAEA;EACE;EACA,YLCW;;AKCX;EACE,OLDS;;AKIX;EACE;EACA;EACA;EACA,OLNe;;AKUnB;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;;AHHN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;AACA;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EACuB;;;AACvB;EAAa;;;AAEb;EACE;EACA;EACA;;;AAGF;AAAA;EAEE;;;AIlJF;EACE;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA,ONvEQ;;AMyER;EACE,YNtFgB;EMuFhB,ONtFgB;EMuFhB;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA,ONzGgB;EM0GhB;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AL9BJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAIA;EACE,ODxFM;;AC2FR;EACE,ODtEqB","file":"admin.css"} \ No newline at end of file diff --git a/nfp_moe_old/public/assets/app.css b/nfp_moe_old/public/assets/app.css deleted file mode 100644 index e907e4f..0000000 --- a/nfp_moe_old/public/assets/app.css +++ /dev/null @@ -1,1625 +0,0 @@ -/* Dark theme */ -html { - box-sizing: border-box; - font-size: 16px; - height: 100%; -} - -*, *:before, *:after { - box-sizing: inherit; -} - -body, h1, h2, h3, h4, h5, h6, p { - margin: 0; - padding: 0; - font-weight: normal; -} - -body { - min-height: 100%; - font-family: Arial, Helvetica, sans-serif; -} - -button { - font-family: Arial, Helvetica, sans-serif; -} - -ol, ul { - list-style: none; -} - -img { - max-width: 100%; - height: auto; - display: block; -} - -@keyframes spinner-loader { - to { - transform: rotate(360deg); - } -} -.loading-spinner:before { - content: ""; - box-sizing: border-box; - position: absolute; - top: 50%; - left: 50%; - width: 20px; - height: 20px; - margin-top: -10px; - margin-left: -10px; - border-radius: 50%; - border: 2px solid #ccc; - border-top-color: #333; - animation: spinner-loader 0.6s linear infinite; - z-index: 1000; -} - -.maincontainer { - background: white; - color: black; - width: 100%; - min-height: 100vh; - display: flex; - flex-direction: column; -} - -.container { - width: 100%; - display: flex; - flex-direction: column; -} - -main { - display: flex; - flex-direction: column; - flex-grow: 2; - position: relative; -} - -.error { - font-size: 0.8em; - color: #bb4d00; - font-weight: bold; - padding-bottom: 20px; -} - -.error-wrapper { - flex-grow: 2; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - background: #ccc; - padding: 40px 0; -} -.error-wrapper .error { - border: 2px dashed #bb4d00; - padding: 10px 20px; - font-size: 1em; -} - -[hidden] { - display: none !important; -} - -article { - display: flex; - flex-direction: column; - flex-grow: 2; - padding: 20px; -} -article header { - display: flex; - flex-direction: column; - margin-bottom: 20px; -} -article header h1 { - font-size: 1.4em; - color: #555; - flex-grow: 2; -} -article header span { - font-size: 0.8em; - color: #757575; -} -article .content { - display: flex; - flex-direction: column; -} -article .content h5 { - font-size: 1em; - font-weight: bold; - color: #555; -} - -form { - display: flex; - flex-direction: column; - align-items: stretch; -} -form label { - text-align: left; - font-weight: bold; - font-size: 0.8em; - padding: 5px 0 3px; -} -form input[type=text], -form input[type=password], -form input[type=datetime-local], -form select, -form textarea { - width: 100%; - font-size: 1em; - padding: 0.5em; - margin: 0 0 0.5em; - background: white; - border: 1px solid #333; - color: black; - outline: none; -} -form input[type=text]:hover, form input[type=text]:focus, -form input[type=password]:hover, -form input[type=password]:focus, -form input[type=datetime-local]:hover, -form input[type=datetime-local]:focus, -form select:hover, -form select:focus, -form textarea:hover, -form textarea:focus { - border-color: #f57c00; -} -form input[type=submit], -form button.submit { - align-self: center; - padding: 0.5em; - margin: 0.5em 0; - min-width: 150px; - border: 1px solid #f57c00; - background: #ffad42; - color: black; - height: 31px; -} -form button.submit::-moz-focus-inner { - border: 0; -} - -a, button { - outline: none; -} - -button::-moz-focus-inner, -input[type=button]::-moz-focus-inner, -input[type=submit]::-moz-focus-inner, -input[type=reset]::-moz-focus-inner { - padding: 0 !important; - border: 0 none !important; -} - -.ce-block__content { - word-wrap: break-word; -} -.ce-block__content .clearfix::after { - clear: both; - display: block; - content: ""; - height: 0; -} -.ce-block__content h1, .ce-block__content h2, .ce-block__content h3, .ce-block__content h4, .ce-block__content h5, .ce-block__content h6, .ce-block__content p, .ce-block__content dl, .ce-block__content ol, .ce-block__content ul { - margin: 0 0 1em !important; -} -.ce-block__content blockquote { - border-left: solid 2px black; - margin-left: 0; - padding-left: 5px; - color: black; -} -.ce-block__content .hide-by-clipping { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.ce-block__content img.fr-rounded, -.ce-block__content .fr-img-caption.fr-rounded img { - border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; -} -.ce-block__content img.fr-bordered, -.ce-block__content .fr-img-caption.fr-bordered img { - border: solid 5px #CCC; -} -.ce-block__content img.fr-bordered { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -.ce-block__content .fr-img-caption.fr-bordered img { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.ce-block__content span.fr-emoticon { - font-weight: normal; - font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; - display: inline; - line-height: 0; -} -.ce-block__content img { - position: relative; - max-width: 100%; -} -.ce-block__content img.fr-dib { - margin: 5px auto; - display: block; - float: none; - vertical-align: top; -} -.ce-block__content img.fr-dib.fr-fil { - margin-left: 0; - text-align: left; -} -.ce-block__content img.fr-dib.fr-fir { - margin-right: 0; - text-align: right; -} -.ce-block__content img.fr-dii { - display: inline-block; - float: none; - vertical-align: bottom; - margin-left: 5px; - margin-right: 5px; - max-width: calc(100% - 10px); -} -.ce-block__content img.fr-dii.fr-fil { - float: left; - margin: 5px 5px 5px 0; - max-width: calc(100% - 5px); -} -.ce-block__content img.fr-dii.fr-fir { - float: right; - margin: 5px 0 5px 5px; - max-width: calc(100% - 5px); -} -.ce-block__content span.fr-img-caption { - position: relative; - max-width: 100%; -} -.ce-block__content span.fr-img-caption.fr-dib { - margin: 5px auto; - display: block; - float: none; - vertical-align: top; -} -.ce-block__content span.fr-img-caption.fr-dib.fr-fil { - margin-left: 0; - text-align: left; -} -.ce-block__content span.fr-img-caption.fr-dib.fr-fir { - margin-right: 0; - text-align: right; -} -.ce-block__content span.fr-img-caption.fr-dii { - display: inline-block; - float: none; - vertical-align: bottom; - margin-left: 5px; - margin-right: 5px; - max-width: calc(100% - 10px); -} -.ce-block__content span.fr-img-caption.fr-dii.fr-fil { - float: left; - margin: 5px 5px 5px 0; - max-width: calc(100% - 5px); -} -.ce-block__content span.fr-img-caption.fr-dii.fr-fir { - float: right; - margin: 5px 0 5px 5px; - max-width: calc(100% - 5px); -} -.ce-block__content a.fr-strong { - font-weight: 700; -} -.ce-block__content a.fr-green { - color: green; -} -.ce-block__content .fr-img-caption { - text-align: center; -} -.ce-block__content .fr-img-caption .fr-img-wrap { - padding: 0; - display: inline-block; - margin: auto; - text-align: center; - width: 100%; -} -.ce-block__content .fr-img-caption .fr-img-wrap img { - display: block; - margin: auto; - width: 100%; -} -.ce-block__content .fr-img-caption .fr-img-wrap > span { - margin: auto; - display: block; - padding: 5px 5px 10px; - font-size: 14px; - font-weight: initial; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-opacity: 0.9; - -moz-opacity: 0.9; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - width: 100%; - text-align: center; -} -.ce-block__content a { - color: #bb4d00; -} -.ce-block__content dt { - font-weight: bold; -} -.ce-block__content ol { - list-style-type: decimal; - padding-left: 40px; -} -.ce-block__content ul { - list-style-type: disc; - padding-left: 40px; -} -.ce-block__content h1 { - font-size: 1.8em; - font-weight: bold; -} -.ce-block__content h2 { - font-size: 1.6em; - font-weight: bold; -} -.ce-block__content h3 { - font-size: 1.4em; - font-weight: bold; -} -.ce-block__content h4 { - font-size: 1.2em; - font-weight: bold; -} -.ce-block__content h5 { - font-size: 1em; - font-weight: bold; -} -.ce-block__content h6 { - font-size: 0.8em; - font-weight: bold; -} -.ce-block__content hr { - width: 100%; -} -.ce-block__content strong { - font-weight: 700; -} - -/* Dark theme */ -#nav { - display: flex; - flex-direction: column; -} -#nav .top { - background: #002f6c; - color: white; - padding: 0 10px 0 0; - min-height: 100px; - display: flex; -} -#nav .top button.dark { - background: transparent; - color: #ffad42; - border: none; - cursor: pointer; - font-weight: bold; -} -#nav .top a.logo { - background: 25px center no-repeat transparent; - background-size: auto 91px; - padding-left: 120px; - display: flex; - color: white; - text-decoration: none; -} -#nav .top h2 { - align-self: center; - font-size: 30px; -} -#nav .top aside { - flex-grow: 2; - display: flex; - flex-direction: column; - align-items: flex-end; - padding: 10px 0; -} -#nav .top aside p { - font-size: 0.8em; - color: #999999; - padding-bottom: 5px; -} -#nav .top aside p a { - margin-left: 5px; -} -#nav .top aside p button { - font-size: 0.8em; -} -#nav .top aside a, #nav .top aside a:visited { - font-weight: bold; - text-align: center; - color: #ffad42; - font-size: 0.8em; - line-height: 1.4em; - text-decoration: none; -} -#nav .top aside .adminlinks { - display: flex; - justify-content: center; - max-width: 200px; - flex-wrap: wrap; -} -#nav .top aside .adminlinks a { - padding: 3px 5px; - min-width: 100px; -} -#nav .top aside .loading-spinner { - position: relative; - width: 200px; -} -#nav nav { - display: flex; - background: #3D77C7; - color: white; -} -#nav nav .hassubmenu { - flex-grow: 2; - flex-basis: 0; - display: flex; -} -#nav nav a, #nav nav a:visited { - flex-grow: 2; - flex-basis: 0; - display: flex; - align-items: center; - justify-content: center; - text-align: center; - color: white; - padding: 10px; - font-size: 0.9em; - text-decoration: none; -} -#nav nav a.active, #nav nav a:visited.active { - border-bottom: 3px solid #f57c00; -} -#nav .loading-spinner { - position: relative; - flex-grow: 2; - flex-basis: 0; -} -#nav .menuerror { - background: #01579b; - text-align: center; - padding: 10px; - color: #FFC7C7; - font-weight: bold; -} - -.avifsupport #nav .top a.logo { - background-image: url("/assets/img/logo.avif"); -} - -.jpegonly #nav .top a.logo { - background-image: url("/assets/img/logo_small.jpg"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .jpegonly #nav .top a.logo { - background-image: url("/assets/img/logo.jpg"); - } -} -.darkmodeon #nav .top { - background: #002f6c; - color: white; -} -.darkmodeon #nav .top a.logo { - color: white; -} -.darkmodeon #nav .top aside p { - color: #999999; -} -.darkmodeon #nav .top aside a, .darkmodeon #nav .top aside a:visited { - color: #ffad42; -} -.darkmodeon #nav nav { - background: #28518B; - color: white; -} -.darkmodeon #nav nav a, .darkmodeon #nav nav a:visited { - color: white; -} -.darkmodeon #nav nav a.active, .darkmodeon #nav nav a:visited.active { - border-bottom: 3px solid #e05e00; -} -.darkmodeon #nav .menuerror { - background: #013b68; - color: #FFC7C7; -} - -footer { - margin-top: 0px; - border-top: 1px solid #ccc; - display: flex; - padding: 20px; - background: #ccc; - color: black; -} -footer .sitemap { - display: flex; - flex: 2 1 auto; - flex-direction: column; - text-align: center; - align-items: center; - font-size: 11px; - font-weight: bold; - padding: 0 20px; -} -footer .sitemap a { - text-decoration: none; - color: #8f3c00; -} -footer .sitemap a.root { - display: block; - margin: 2px; - padding: 2px 0 0; -} -footer .sitemap ul { - margin: 2px 0 0; - display: flex; - flex-wrap: wrap; - padding: 0 0 10px; - justify-content: center; - border-bottom: 1px solid white; - margin-bottom: 10px; - min-width: 300px; -} -footer .sitemap ul li { - padding: 2px 5px; - list-style-type: disc; - list-style-position: inside; -} -footer .footer-filler { - width: 119px; - flex: 0 0 119px; -} -footer .footer-logo { - background: center no-repeat transparent; - background-size: contain; - align-self: center; - width: 119px; - height: 150px; - flex: 0 0 119px; -} -footer .meta { - flex-grow: 2; - display: flex; - flex-wrap: wrap; - padding-top: 5px; - align-items: flex-end; - text-align: center; - justify-content: center; -} -footer .meta a { - margin: 0 3px; -} - -.darkmodeon footer { - border-top: 1px solid #343536; - background: #343536; - color: #d7dadc; -} -.darkmodeon footer .sitemap a { - color: #fe791b; -} - -.daymode.jpegonly footer .footer-logo { - background-image: url("/assets/img/tsun_small.jpg"); -} - -.darkmodeon.jpegonly footer .footer-logo { - background-image: url("/assets/img/dark_tsun_small.jpg"); -} - -.avifsupport footer .footer-logo { - background-image: url("/assets/img/tsun.avif"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .daymode.jpegonly .footer-logo { - background-image: url("/assets/img/tsun.jpg"); - } - .darkmodeon.jpegonly .footer-logo { - background-image: url("/assets/img/dark_tsun.jpg"); - } -} -@media (pointer: coarse) { - footer .sitemap a.root, -footer .sitemap a.child { - padding: 10px 10px; - display: inline-block; - } -} -@media screen and (max-width: 900px) { - footer .footer-filler { - display: none; - } -} -@media screen and (max-width: 480px) { - footer { - flex-direction: column; - align-items: center; - } - footer .footer-logo { - margin-top: 20px; - } - footer .sitemap { - padding: 0px; - } - footer .sitemap ul { - align-self: stretch; - } - footer .sitemap a.root, -footer .sitemap a.child { - padding: 9px 10px; - display: inline-block; - } -} -/* Dark theme */ -.login-wrapper { - flex-grow: 2; - display: flex; - flex-direction: column; - justify-content: center; - background: #ccc; - padding: 40px 0; -} -.login-wrapper .login-icon { - background: url("./img/login.png") center no-repeat transparent; - background-size: contain; - width: 106px; - height: 130px; - align-self: center; -} - -article.login { - text-align: center; - flex-grow: 0; - border: 1px solid #555; - background: white; - color: black; - align-self: center; -} -article.login .content { - align-items: center; - align-self: center; - padding: 20px 40px; -} -article.login h5 { - margin-bottom: 20px; -} -article.login .loading-spinner { - width: 240px; - height: 50px; - position: relative; -} -article.login form { - align-self: stretch; - margin-bottom: 20px; -} - -.darkmodeon .login-wrapper { - background: #343536; -} -.darkmodeon article.login { - border: 1px solid #808080; - background: black; - color: #d7dadc; -} - -newsentry { - display: flex; - color: #757575; - font-size: 12px; -} -newsentry .title { - display: flex; - margin-bottom: 10px !important; -} -newsentry .title a { - text-decoration: none; - color: #bb4d00; - font-size: 14px; - font-weight: bold; -} -newsentry a.cover { - flex-shrink: 0; - margin-right: 10px; - width: 124px; - text-align: center; -} -newsentry a.cover img { - max-height: 70px; - width: auto; -} -newsentry a.nobg { - height: 70px; - width: 124px; - background: #ddd; -} -newsentry .entrycontent { - display: flex; - flex-direction: column; - flex: 2 1 auto; - padding: 0 5px 5px; -} -newsentry .entrycontent h3 { - margin-bottom: 0 !important; - font-size: 1.3em; - font-weight: bold; -} -newsentry .entrymeta { - font-size: 10px; - color: #757575; - font-weight: bold; - display: none; -} - -fileinfo { - padding: 0 5px; - margin-bottom: 5px; - display: flex; - flex-direction: column; -} -fileinfo.slim { - padding: 0; - margin: 0; -} -fileinfo .filetitle { - display: block; - line-height: 16px; -} -fileinfo .filetitle .prefix { - font-weight: bold; - margin-right: 5px; -} -fileinfo .filetitle a { - color: #bb4d00; - font-weight: bold; - text-decoration: none; - padding-right: 5px; - border-right: 1px solid #ccc; - margin-right: 5px; - display: inline-block; -} -fileinfo .trimmed { - padding: 3px 0 5px 25px; -} -fileinfo ul { - margin: 10px 0; - padding-left: 0; - list-style-type: disc; - list-style-position: inside; -} -fileinfo ul li { - padding-left: 20px; -} - -@media screen and (max-width: 480px) { - fileinfo, -fileinfo.slim { - padding: 8px 5px; - justify-content: center; - } -} -@media (pointer: coarse) { - fileinfo, -fileinfo.slim { - padding: 8px 5px; - justify-content: center; - } -} -newsitem { - display: flex; - flex-direction: column; - font-size: 15px; - background: transparent; - border: none; -} -newsitem .title { - text-decoration: none; - background: #f57c00; - color: black; - font-size: 1.2em; - font-weight: bold; - text-align: center; - padding: 5px 10px; - margin-bottom: 10px; -} -newsitem .newsitemcontent { - display: flex; -} -newsitem a.cover { - flex-shrink: 0; - margin-right: 10px; - width: 400px; - text-align: center; -} -newsitem a.cover picture { - max-height: 400px; - max-width: 400px; - width: auto; -} -newsitem a.nobg { - height: 225px; - width: 400px; - background: #ddd; -} -newsitem .entrycontent { - display: flex; - flex-direction: column; - flex: 2 1 auto; - padding: 0 5px 5px; -} -newsitem .entrycontent.extrapadding { - padding: 0 15px 5px; -} -newsitem .entrycontent h3 { - margin-bottom: 0 !important; - font-size: 1.3em; - font-weight: bold; -} -newsitem .entrycontent .fr-view { - margin-bottom: 10px; -} -newsitem .entrycontent fileinfo { - font-size: 0.8em; -} -newsitem .entrymeta { - flex-grow: 2; - font-size: 11px; - color: #757575; - font-weight: bold; - padding: 10px 0; -} -newsitem .entrymeta a { - color: #bb4d00; - margin: 0 5px; - text-decoration: none; -} - -pages { - display: flex; - justify-content: center; - width: 100%; -} -pages a, pages div { - display: block; - font-size: 0.9em; - max-width: 80px; - flex-grow: 2; - text-align: center; - padding: 10px !important; - margin-top: 10px; -} -pages a { - color: #bb4d00; - cursor: pointer; -} - -@media screen and (max-width: 1000px) { - newsitem a.cover { - width: 300px; - } - newsitem a.cover picture { - max-width: 300px; - width: auto; - } -} -@media screen and (max-width: 639px) { - newsitem a.cover { - width: 100%; - margin-bottom: 20px; - } - newsitem a.cover picture { - max-height: unset; - max-width: unset; - width: 100%; - } - newsitem .newsitemcontent { - flex-direction: column; - } - newsitem .entrycontent.extrapadding { - padding: 0 5px 5px; - } -} -@media screen and (max-width: 440px) { - newsentry { - flex-direction: column; - align-items: center; - } - newsentry a.cover { - margin: 0 0 15px; - width: 100%; - } - newsentry a.cover img { - max-height: unset; - width: 100%; - } -} -.darkmodeon newsentry { - color: hsl(0deg, 0%, 55%); -} -.darkmodeon newsentry .title a { - color: #e05e00; -} -.darkmodeon newsentry .entrymeta { - color: hsl(0deg, 0%, 55%); -} -.darkmodeon fileinfo .filetitle a { - color: #e05e00; - border-right: 1px solid #343536; -} -.darkmodeon newsitem { - background: #1a1a1b; - border: 1px solid #343536; -} -.darkmodeon newsitem .title { - background: #e05e00; - color: black; -} -.darkmodeon newsitem .entrymeta { - color: hsl(0deg, 0%, 55%); -} -.darkmodeon newsitem .entrymeta a { - color: #e05e00; -} -.darkmodeon pages a { - color: #e05e00; -} - -article.page { - padding-bottom: 0; -} -article.page header { - text-align: center; - margin: 20px 20px 0; - padding: 10px; - background: #f57c00; - width: 100%; - max-width: 1920px; - align-self: center; -} -article.page header h1 { - color: black; -} -article.page .loading-spinner { - position: relative; - flex-grow: 2; - height: 300px; -} -article.page .page-banner { - background-size: cover; - background-repeat: no-repeat; - background-position: center; - height: 150px; - width: 100%; - max-width: 1920px; - align-self: center; - flex: 0 0 150px; -} -article.page .page-cover { - margin: 0 0 20px; -} -article.page .page-cover.single { - margin: 0 20px 20px; - padding: 0 20px; - width: calc(100% - 40px); - max-width: 800px; - flex: 2 0 0; -} -article.page .goback { - width: 100%; - max-width: 1050px; - align-self: center; - padding: 10px 5px 0; - margin-bottom: -10px; -} -article.page .goback a { - font-weight: bold; - text-decoration: none; - color: #bb4d00; -} -article.page .admin-actions { - margin-bottom: 20px; -} -article.page aside.sidebar h4, -article.page aside.news h4 { - font-size: 14px; - font-weight: bold; - margin: 0 0 10px; -} -article.page .container { - flex-direction: column; - align-items: center; - height: auto; - padding: 20px 0; - width: 100%; - max-width: 1050px; - align-self: center; - background: transparent; - border-right: none; - border-left: none; -} -article.page .container.multi { - align-items: flex-start; - flex-direction: row; - flex-grow: 2; -} -article.page aside.sidebar { - width: 250px; - flex: 0 0 250px; - padding: 0 10px; - margin-bottom: 10px; -} -article.page aside.sidebar h4 { - padding: 0 5px 5px; - border-bottom: 1px solid #ccc; -} -article.page aside.sidebar a { - padding: 5px 5px 0px; - display: block; - text-decoration: none; - color: #bb4d00; - font-size: 14px; - font-weight: bold; -} -article.page .fr-view { - margin: 0 20px; - padding: 0 20px; - width: calc(100% - 40px); - max-width: 800px; - flex: 2 0 0; -} -article.page .fr-view .page-cover { - margin: 0 -10px 20px; -} -article.page .fr-view main { - padding: 0 5px; -} - -aside.news { - border-top: 1px solid #ccc; - margin-top: 20px; - padding: 10px 10px; - margin: 0 -10px; - width: 100%; - align-self: center; -} -aside.news .loading-spinner { - position: relative; - height: 133px; -} -aside.news newsentry { - margin: 0 0 10px; -} -aside.news.single { - flex: 2 0 0; - padding: 0 20px 10px; - border-top: none; - margin-top: 0; - align-self: flex-start; - margin: 0; -} -aside.news.single > h4 { - padding: 0 5px 5px; - border-bottom: 1px solid #ccc; -} - -@media screen and (max-width: 800px) { - article.page aside.sidebar { - width: 200px; - flex: 0 0 200px; - } -} -@media screen and (max-width: 639px) { - article.page { - padding: 0; - } - article.page .container { - flex-direction: column !important; - border: none !important; - } - article.page aside.sidebar { - width: calc(100% - 80px); - flex: 0 0 auto; - margin: 0px 30px 30px; - border-bottom: 1px solid #ccc; - padding: 0 0 5px; - } - article.page .news.single .page-cover { - margin: 0 0 20px; - } -} -@media screen and (max-width: 360px) { - article.page .container { - flex-direction: column; - } - article.page aside { - margin: 0px 0px 10px; - } - article.page .fr-view { - margin: 0; - width: 100%; - padding: 0 5px; - } -} -@media screen and (max-width: 480px) { - article.page aside.sidebar a { - padding: 9px 10px; - } -} -@media (pointer: coarse) { - article.page aside.sidebar a { - padding: 9px 10px; - } -} -.darkmodeon article.page header { - background: #e05e00; -} -.darkmodeon article.page header h1 { - color: black; -} -.darkmodeon article.page .container { - background: #1a1a1b; - border-right: 1px solid #343536; - border-left: 1px solid #343536; -} -.darkmodeon article.page aside.sidebar h4 { - border-bottom: 1px solid #343536; -} -.darkmodeon article.page aside.sidebar a { - color: #e05e00; -} -.darkmodeon article.page .goback a { - color: #e05e00; -} -.darkmodeon aside.news.single > h4 { - border-bottom: 1px solid #343536; -} -@media screen and (max-width: 639px) { - .darkmodeon article.page aside.sidebar { - border-bottom: 1px solid #343536; - } -} -.darkmodeon .goback a { - color: #e05e00; -} - -article.article { - padding: 0; -} -article.article header { - text-align: center; - margin: 20px 20px 0; - padding: 10px; - background: #f57c00; - width: 100%; - max-width: 1920px; - align-self: center; -} -article.article header h1 { - color: black; -} -article.article .loading-spinner { - position: relative; - flex-grow: 2; - height: 300px; -} -article.article .cover { - margin: 0 0 20px; -} -article.article .admin-actions { - margin-bottom: 20px; -} -article.article .fr-view { - margin: 0 20px; - padding: 20px 20px 10px; - width: calc(100% - 40px); - max-width: 800px; - flex: 2 0 0; - align-self: center; - background: transparent; - border-right: 1px solid #343536; - border-left: 1px solid #343536; -} -article.article .fr-view a.cover img { - margin-bottom: 30px; -} -article.article .fr-view main { - padding: 0 5px; -} -article.article fileinfo { - font-size: 0.8em; -} -article.article fileinfo ul { - padding-left: 0; -} -article.article .opencomments { - border: none; - align-self: center; - width: calc(100% - 40px); - max-width: 300px; - background: transparent; - font-size: 1.2em; - color: #bb4d00; - cursor: pointer; - height: 50px; - margin: 0 0 30px; -} -article.article .commentcontainer { - align-self: center; - width: calc(100% - 40px); - max-width: 800px; - margin-bottom: 30px; - min-height: 50px; - position: relative; -} -article.article .goback { - width: calc(100% - 40px); - max-width: 800px; - align-self: center; - padding: 30px 5px 0; - margin-bottom: -10px; -} -article.article .goback a { - font-weight: bold; - text-decoration: none; - color: #bb4d00; -} -article.article .entrymeta { - flex-grow: 2; - font-size: 11px; - color: #757575; - font-weight: bold; - margin: 40px 0 0; -} -article.article .entrymeta a { - color: #bb4d00; - margin: 0 4px; - text-decoration: none; -} - -@media screen and (max-width: 639px) { - article.article .fr-view { - margin: 0; - width: 100%; - border: none !important; - } -} -.darkmodeon article.article header { - background: #e05e00; -} -.darkmodeon article.article header h1 { - color: black; -} -.darkmodeon article.article .fr-view { - background: #1a1a1b; -} -.darkmodeon article.article .opencomments { - color: #e05e00; -} -.darkmodeon article.article .goback a { - color: #e05e00; -} -.darkmodeon article.article .entrymeta { - color: hsl(0deg, 0%, 55%); -} -.darkmodeon article.article .entrymeta a { - color: #e05e00; -} - -.frontpage-banner { - background-color: #999999; - background-size: cover; - background-repeat: no-repeat; - background-position: center; - height: 150px; - width: calc(100% - 40px); - max-width: 1920px; - align-self: center; - flex: 0 0 150px; - margin-bottom: 20px; - color: white; - text-shadow: 0 0 0.3em #000000; - text-align: right; - font-size: 1.6em; - padding: 10px 20px; - text-decoration: none; - margin: 20px 0; -} - -frontpage { - display: flex; - align-self: center; - width: calc(100% - 40px); - max-width: 1200px; - flex: 2 0 0; -} -frontpage .frontpage-news { - display: flex; - flex-direction: column; - flex-grow: 2; -} -frontpage aside.sidebar { - width: 250px; - flex: 0 0 250px; - align-self: flex-start; - margin-right: 20px; - display: flex; - flex-direction: column; -} -frontpage aside.sidebar .categories { - padding: 10px 10px 20px; - margin-bottom: 20px; - background: transparent; - border: none; -} -frontpage aside.sidebar h4 { - font-size: 14px; - padding: 0 5px 5px; - font-weight: bold; - margin: 0 0 10px; - border-bottom: 1px solid #ccc; -} -frontpage aside.sidebar ul { - margin: 0; - padding: 0; -} -frontpage aside.sidebar ul li { - padding-left: 10px; - list-style-type: disc; - list-style-position: inside; -} -frontpage aside.sidebar a { - padding: 2px 5px; - display: block; - text-decoration: none; - color: #bb4d00; - font-size: 14px; - font-weight: bold; - display: inline-block; - max-width: 200px; -} -frontpage .loading-spinner { - height: 100px; - position: relative; -} -frontpage newsitem { - margin-bottom: 30px; -} -frontpage .asunaside { - display: block; - width: 200px; - height: 480px; - background-size: contain; - background-repeat: no-repeat; - background-position: top left; - align-self: center; -} - -@media screen and (max-width: 1000px) { - frontpage aside.sidebar { - width: 200px; - flex: 0 0 200px; - } - frontpage aside.sidebar a { - max-width: 150px; - } -} -@media screen and (max-width: 900px) { - frontpage { - flex-direction: column; - } - frontpage aside.sidebar { - width: auto; - flex: 0 0 auto; - align-self: stretch; - margin: 20px 0 30px; - border-bottom: 1px solid #ccc; - order: 2; - } - frontpage aside.sidebar .categories { - display: flex; - flex-direction: column; - align-items: center; - } - frontpage aside.sidebar .categories h4 { - align-self: stretch; - } - frontpage aside.sidebar a { - max-width: unset; - } -} -.daymode.jpegonly frontpage .asunaside { - background-image: url("/assets/img/asuna_frontpage.jpg"); -} - -.daymode.avifsupport frontpage .asunaside { - background-image: url("/assets/img/asuna_frontpage.avif?v=1"); -} - -.darkmodeon.jpegonly frontpage .asunaside { - background-image: url("/assets/img/dark_asuna_frontpage.jpg"); -} - -.darkmodeon.avifsupport frontpage .asunaside { - background-image: url("/assets/img/dark_asuna_frontpage.avif?v=1"); -} - -@media screen and (max-width: 480px) { - .frontpage-banner { - width: 100%; - } - frontpage { - padding: 0 10px; - margin: 0; - width: 100%; - } - frontpage aside.sidebar a { - padding: 9px 10px; - } -} -@media (pointer: coarse) { - frontpage aside.sidebar a { - padding: 9px 10px; - } -} -.darkmodeon .frontpage-banner { - background-color: #999999; -} -.darkmodeon frontpage aside.sidebar .categories { - background: #1a1a1b; - border: 1px solid #343536; -} -.darkmodeon frontpage aside.sidebar h4 { - border-bottom: 1px solid #343536; -} -.darkmodeon frontpage aside.sidebar a { - color: #e05e00; -} - -.darkmodeon .maincontainer { - background: black; - color: #d7dadc; -} -.darkmodeon .error { - color: #e05e00; -} -.darkmodeon .fr-view blockquote { - border-left-color: #d7dadc; - color: #d7dadc; -} -.darkmodeon article.article header span, -.darkmodeon article.login header span, -.darkmodeon article.page header span { - color: hsl(0deg, 0%, 55%); -} -.darkmodeon article.article .content h5, -.darkmodeon article.login .content h5, -.darkmodeon article.page .content h5 { - color: #808080; -} -.darkmodeon .login form input[type=text], -.darkmodeon .login form input[type=password], -.darkmodeon .login form select, -.darkmodeon .login form textarea { - background: #272729; - border: 1px solid #343536; - color: white; -} -.darkmodeon .login form input[type=text]:hover, .darkmodeon .login form input[type=text]:focus, -.darkmodeon .login form input[type=password]:hover, -.darkmodeon .login form input[type=password]:focus, -.darkmodeon .login form select:hover, -.darkmodeon .login form select:focus, -.darkmodeon .login form textarea:hover, -.darkmodeon .login form textarea:focus { - border-color: #e05e00; -} -.darkmodeon .login form input[type=submit] { - border: 1px solid #e05e00; - background: #ffad42; - color: black; -} -.darkmodeon .login form input[type=submit]:hover { - background: #e05e00; - color: white; -} -.darkmodeon .fr-view a { - color: #e05e00; -} - -:root { - --primary-bg: #01579b; - --primary-fg: white; - --primary-fg-url: #FFC7C7; - --primary-light-bg: #3D77C7; - --primary-light-fg: white; - --primary-dark-bg: #002f6c; - --primary-dark-fg: white; - --secondary-bg: #f57c00; - --secondary-fg: black; - --secondary-light-bg: #ffad42; - --secondary-light-fg: black; - --secondary-dark-bg: #bb4d00; - --secondary-dark-fg: white; - --table-fg: #333; - --border: #ccc; - --border-fg: black; - --border-fg-url: #8f3c00; - --title-fg: #555; - --meta-fg: #757575; - --meta-light-fg: #999999; - --main-bg: white; - --main-fg: black; - --input-bg: white; - --input-border: #333; - --input-fg: black; - --newsitem-bg: transparent; - --newsitem-border: none; -} - -.darkmodeon { - --primary-bg: #013b68; - --primary-fg: white; - --primary-fg-url: #FFC7C7; - --primary-light-bg: #28518B; - --primary-light-fg: white; - --primary-dark-bg: #002f6c; - --primary-dark-fg: white; - --secondary-bg: #e05e00; - --secondary-fg: black; - --secondary-light-bg: #ffad42; - --secondary-light-fg: black; - --secondary-dark-bg: #e05e00; - --secondary-dark-fg: white; - --secondary-darker-fg: #fe791b; - --table-fg: #333; - --border: #343536; - --border-fg: #d7dadc; - --border-fg-url: #e05e00; - --title-fg: #808080; - --meta-fg: hsl(0, 0%, 55%); - --meta-light-fg: #999999; - --main-bg: black; - --main-fg: #d7dadc; - --input-bg: #272729; - --input-border: #343536; - --input-fg: white; - --newsitem-bg: #1a1a1b; - --newsitem-border: 1px solid #343536; -} - -/*# sourceMappingURL=app.css.map */ diff --git a/nfp_moe_old/public/assets/app.css.map b/nfp_moe_old/public/assets/app.css.map deleted file mode 100644 index bcee5de..0000000 --- a/nfp_moe_old/public/assets/app.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["../../app/_common.scss","../../app/app.scss","../../app/editor.scss","../../app/menu/menu.scss","../../app/footer/footer.scss","../../app/login/login.scss","../../app/widgets/common.scss","../../app/pages/page.scss","../../app/article/article.scss","../../app/frontpage/frontpage.scss"],"names":[],"mappings":"AAiCA;AC/BA;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;IAAI;;;AAGN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE,YDnCQ;ECoCR,ODnCQ;ECoCR;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA,ODrEkB;ECsElB;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,YD5EO;EC6EP;;AAEA;EACE;EACA;EACA;;;AAIJ;EAAW;;;AAEX;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA,ODlGK;ECmGL;;AAGF;EACE;EACA,ODvGI;;AC2GR;EACE;EACA;;AAEA;EACE;EACA;EACA,ODnHK;;;ACwHX;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA,YDvIO;ECwIP;EACA,ODvIO;ECwIP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE,cD/JS;;ACmKb;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA,YDxKiB;ECyKjB,ODxKiB;ECyKjB;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;AAAA;AAAA;AAAA;EAIE;EACA;;;ACtMF;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEF;EACE;;AAGF;EACE;EACA;EACA;EACA,OFQM;;AELR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;AAGF;AAAA;EAEE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAAI,OFrLc;;AEsLlB;EAAK;;AACL;EAAK;EAA0B;;AAC/B;EAAK;EAAuB;;AAC5B;EAAK;EAAkB;;AACvB;EAAK;EAAkB;;AACvB;EAAK;EAAkB;;AACvB;EAAK;EAAkB;;AACvB;EAAK;EAAkB;;AACvB;EAAK;EAAkB;;AACvB;EAAK;;AACL;EAAS;;;AF5KX;AG/BA;EACE;EACA;;AAEA;EACE,YHDc;EGEd,OHDc;EGEd;EACA;EACA;;AAEA;EACE;EACA,OHJe;EGKf;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA,OHnBY;EGoBZ;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA,OHtBQ;EGuBR;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA,OHhDa;EGiDb;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;AAKN;EACE;EACA,YHlFe;EGmFf,OHlFe;;AGoFf;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OHjGa;EGkGb;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE,YHvHS;EGwHT;EACA;EACA,OHxHa;EGyHb;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EAOE;IACE;;;AAMA;EACE,YH/GiB;EGgHjB,OH/GiB;;AGiHjB;EACE,OHlHe;;AGsHf;EACE,OHvGW;;AG0Gb;EACE,OHvHgB;;AG4HtB;EACE,YHpIkB;EGqIlB,OHpIkB;;AGsIlB;EACE,OHvIgB;;AGyIhB;EACE;;AAKN;EACE,YHpJY;EGqJZ,OHnJgB;;;AIpCtB;EACE;EACA;EACA;EACA;EACA,YJWO;EIVP,OJWU;;AITV;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA,OJFU;;AIKZ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAKN;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAAI;;;AAKN;EACE;EACA,YJ1BU;EI2BV,OJ1Ba;;AI6BX;EACE,OJlCmB;;;AIwC3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EAOE;IACE;;EAGF;IACE;;;AAIJ;EACE;AAAA;IAEE;IACA;;;AAIJ;EACE;IACE;;;AAIJ;EACE;IACE;IACA;;EAEA;IACE;;EAGF;IACE;;EAEA;IACE;;EAKN;AAAA;IAEE;IACA;;;AJvHJ;AK/BA;EACE;EACA;EACA;EACA;EACA,YLUO;EKTP;;AAEA;EACE;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA,YLCQ;EKAR,OLCQ;EKAR;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;;;AAKF;EACE,YLCU;;AKEZ;EACE;EACA,YLGW;EKFX,OLGW;;;AM3Df;EACE;EACA,ONkBQ;EMjBR;;AAEA;EACE;EACA;;AAEA;EACE;EACA,ONCc;EMAd;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA,ON9BM;EM+BN;EACA;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE,ONjEc;EMkEd;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAKN;EACE;AAAA;IAEE;IACA;;;AAIJ;EACE;AAAA;IAEE;IACA;;;AAIJ;EACE;EACA;EACA;EACA,YN9FY;EM+FZ,QN9FgB;;AMgGhB;EACE;EACA,YNxHW;EMyHX,ONxHW;EMyHX;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA,ONxKM;EMyKN;EACA;;AAEA;EACE,ONrLc;EMsLd;EACA;;;AAKN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE,ON5MgB;EM6MhB;;;AAIJ;EACE;IACE;;EAEA;IACE;IACA;;;AAKN;EAEI;IACE;IACA;;EAEA;IACE;IACA;IACA;;EAIJ;IACE;;EAGF;IACE;;;AAKN;EACE;IACE;IACA;;EAEA;IACE;IACA;;EAEA;IACE;IACA;;;AAON;EACE,ON3NW;;AM8NT;EACE,ONxOiB;;AM4OrB;EACE,ONpOS;;AM0OT;EACE,ONpPiB;EMqPjB;;AAKN;EACE,YNzOe;EM0Of,QNzOmB;;AM2OnB;EACE,YNnQc;EMoQd,ONnQc;;AMsQhB;EACE,ON3PS;;AM6PT;EACE,ONvQiB;;AM6QrB;EACE,ON9QmB;;;AO/CzB;EACE;;AAEA;EACE;EACA;EACA;EACA,YPEW;EODX;EACA;EACA;;AAEA;EACE,OPHS;;AOOb;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA,OP3Cc;;AO+ClB;EACE;;AAKA;AAAA;EACE;EACA;EACA;;AAaJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,YP7DU;EO8DV,cP7Dc;EO8Dd,aP9Dc;;AOgEd;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA,OPxGc;EOyGd;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;IACE;IACA;;;AAIJ;EACE;IACE;;EAEA;IACE;IACA;;EAGF;IACE;IACA;IACA;IACA;IACA;;EAGF;IACE;;;AAKN;EAEI;IACE;;EAGF;IACE;;EAGF;IACE;IACA;IACA;;;AAKN;EACE;IACE;;;AAIJ;EACE;IACE;;;AAMA;EACE,YPjMc;;AOkMd;EACE,OPlMY;;AOsMhB;EACE,YPlLa;EOmLb,cPlLiB;EOmLjB,aPnLiB;;AOuLjB;EACE;;AAGF;EACE,OP/MiB;;AOmNrB;EACE,OPpNmB;;AO0NnB;EACE;;AAKN;EACE;IACE;;;AAIJ;EACE,OPvOqB;;;AQ9CzB;EACE;;AAEA;EACE;EACA;EACA;EACA,YRCW;EQAX;EACA;EACA;;AAEA;EACE,ORJS;;AQQb;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA,YRTU;EQUV;EACA;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA,ORtDgB;EQuDhB;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA,OR/Ec;;AQmFlB;EACE;EACA;EACA,OR9EM;EQ+EN;EACA;;AAEA;EACE,OR3Fc;EQ4Fd;EACA;;;AAKN;EAEI;IACE;IACA;IACA;;;AAOF;EACE,YRjFc;;AQmFd;EACE,ORnFY;;AQuFhB;EACE,YRnEa;;AQsEf;EACE,ORzFmB;;AQ4FrB;EACE,OR7FmB;;AQgGrB;EACE,ORxFS;;AQyFT;EACE,ORnGiB;;;AS/CzB;EACE,kBTqBc;ESpBd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA,YTdQ;ESeR,QTdY;;ASiBd;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA,OT1Dc;ES2Dd;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;IACE;IACA;;EAEA;IACE;;;AAKN;EACE;IACE;;EAEA;IACE;IACA;IACA;IACA;IACA;IACA;;EAEA;IACE;IACA;IACA;;EAEA;IACE;;EAIJ;IACE;;;AAMR;EACE;;;AAEF;EACE;;;AAGF;EACE;;;AAEF;EACE;;;AAGF;EACE;IACE;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;;AAIJ;EACE;IACE;;;AAKF;EACE,kBTxHiB;;AS6Hf;EACE,YTtHW;ESuHX,QTtHe;;ASyHjB;EACE;;AAGF;EACE,OTjJiB;;;ACqKvB;EACE,YD1JW;EC2JX,OD1JW;;AC6Jb;EACE,OD3KqB;;AC8KvB;EACE,mBDlKW;ECmKX,ODnKW;;AC8KT;AAAA;AAAA;EACE,ODnLO;;ACwLT;AAAA;AAAA;EACE,OD1LQ;;ACgMZ;AAAA;AAAA;AAAA;EAIE,YD9LU;EC+LV;EACA,OD9LU;;ACgMV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE,cDtNY;;AC0NhB;EACE;EACA,YD1NoB;EC2NpB,OD1NoB;;AC4NpB;EACE,YD5NiB;EC6NjB,OD5NiB;;ACkOrB;EAAI,ODnOiB;;;ACuOzB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA","file":"app.css"} \ No newline at end of file diff --git a/nfp_moe_old/public/assets/editor.js b/nfp_moe_old/public/assets/editor.js deleted file mode 100644 index 047e054..0000000 --- a/nfp_moe_old/public/assets/editor.js +++ /dev/null @@ -1,48 +0,0 @@ -/*! For license information please see editor.js.LICENSE.txt */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.EditorJS=e():t.EditorJS=e()}(window,(function(){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=187)}([function(t,e,n){var o=n(10),r=n(17),i=n(27),a=n(23),s=n(31),l=function(t,e,n){var c,u,f,d,p=t&l.F,h=t&l.G,v=t&l.S,g=t&l.P,y=t&l.B,b=h?o:v?o[e]||(o[e]={}):(o[e]||{}).prototype,m=h?r:r[e]||(r[e]={}),k=m.prototype||(m.prototype={});for(c in h&&(n=e),n)f=((u=!p&&b&&void 0!==b[c])?b:n)[c],d=y&&u?s(f,o):g&&"function"==typeof f?s(Function.call,f):f,b&&a(b,c,f,t&l.U),m[c]!=f&&i(m,c,d),g&&k[c]!=f&&(k[c]=f)};o.core=r,l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,t.exports=l},function(t,e){t.exports=function(t){return t&&t.__esModule?t:{default:t}}},function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e){function n(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:"log",o=arguments.length>3?arguments[3]:void 0,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"color: inherit";if("console"in window&&window.console[n]){var i=["info","log","warn","error"].includes(n),a=[];switch(c.logLevel){case s.ERROR:if("error"!==n)return;break;case s.WARN:if(!["error","warn"].includes(n))return;break;case s.INFO:if(!i||t)return}o&&a.push(o);var l="Editor.js ".concat("2.25.0"),u="line-height: 1em;\n color: #006FEA;\n display: inline-block;\n font-size: 11px;\n line-height: 1em;\n background-color: #fff;\n padding: 4px 9px;\n border-radius: 30px;\n border: 1px solid rgba(56, 138, 229, 0.16);\n margin: 4px 5px 4px 0;";t&&(i?(a.unshift(u,r),e="%c".concat(l,"%c ").concat(e)):e="( ".concat(l," )").concat(e));try{if(i)if(o){var f;(f=console)[n].apply(f,["".concat(e," %o")].concat(a))}else{var d;(d=console)[n].apply(d,[e].concat(a))}else console[n](e)}catch(t){}}}Object.defineProperty(t,"__esModule",{value:!0}),t.setLogLevel=function(t){c.logLevel=t},t.typeOf=d,t.isFunction=p,t.isObject=h,t.isString=function(t){return"string"===d(t)},t.isBoolean=function(t){return"boolean"===d(t)},t.isNumber=function(t){return"number"===d(t)},t.isUndefined=v,t.isClass=function(t){return p(t)&&/^\s*class\s+/.test(t.toString())},t.isEmpty=function(t){return!t||0===Object.keys(t).length&&t.constructor===Object},t.isPromise=function(t){return Promise.resolve(t)===t},t.isPrintableKey=function(t){return t>47&&t<58||32===t||13===t||229===t||t>64&&t<91||t>95&&t<112||t>185&&t<193||t>218&&t<223},t.sequence=function(t){return g.apply(this,arguments)},t.array=function(t){return Array.prototype.slice.call(t)},t.delay=function(t,e){return function(){var n=this,o=arguments;window.setTimeout((function(){return t.apply(n,o)}),e)}},t.getFileExtension=function(t){return t.name.split(".").pop()},t.isValidMimeType=function(t){return/^[-\w]+\/([-+\w]+|\*)$/.test(t)},t.debounce=function(t,e,n){var o,r=this;return function(){for(var i=arguments.length,a=new Array(i),s=0;s2&&void 0!==arguments[2]?arguments[2]:void 0,a=null,s=0;i||(i={});var l=function(){s=!1===i.leading?0:Date.now(),a=null,r=t.apply(n,o),a||(n=o=null)};return function(){var c=Date.now();s||!1!==i.leading||(s=c);var u=e-(c-s);return n=this,o=arguments,u<=0||u>e?(a&&(clearTimeout(a),a=null),s=c,r=t.apply(n,o),a||(n=o=null)):a||!1===i.trailing||(a=setTimeout(l,u)),r}},t.copyTextToClipboard=function(t){var e=a.default.make("div","codex-editor-clipboard",{innerHTML:t});document.body.appendChild(e);var n=window.getSelection(),o=document.createRange();o.selectNode(e),window.getSelection().removeAllRanges(),n.addRange(o),document.execCommand("copy"),document.body.removeChild(e)},t.getUserOS=y,t.capitalize=function(t){return t[0].toUpperCase()+t.slice(1)},t.deepMerge=function t(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i0&&void 0!==arguments[0]?arguments[0]:"";return"".concat(t).concat(Math.floor(1e8*Math.random()).toString(16))},t.deprecationAssert=function(t,e,n){var o="«".concat(e,"» is deprecated and will be removed in the next major release. Please use the «").concat(n,"» instead.");t&&f(o,"warn")},t.cacheable=function(t,e,n){var o=n.value?"value":"get",r=n[o],i="#".concat(e,"Cache");if(n[o]=function(){if(void 0===this[i]){for(var t=arguments.length,e=new Array(t),n=0;n1&&void 0!==l[1]?l[1]:function(){},i=l.length>2&&void 0!==l[2]?l[2]:function(){},t.abrupt("return",n.reduce(function(){var t=(0,r.default)(e.default.mark((function t(n,r){return e.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n;case 2:return t.abrupt("return",a(r,o,i));case 3:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),Promise.resolve()));case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function y(){var t={win:!1,mac:!1,x11:!1,linux:!1},e=Object.keys(t).find((function(t){return-1!==navigator.appVersion.toLowerCase().indexOf(t)}));return e?(t[e]=!0,t):t}t.logLabeled=f;var b="ontouchstart"in document.documentElement;t.isTouchSupported=b;var m="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);t.isIosDevice=m})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o=n(59);function r(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return r=function(){return t},t}t.exports=function(t){if(t&&t.__esModule)return t;if(null===t||"object"!==o(t)&&"function"!=typeof t)return{default:t};var e=r();if(e&&e.has(t))return e.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if(Object.prototype.hasOwnProperty.call(t,a)){var s=i?Object.getOwnPropertyDescriptor(t,a):null;s&&(s.get||s.set)?Object.defineProperty(n,a,s):n[a]=t[a]}return n.default=t,e&&e.set(t,n),n}},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(111)],void 0===(i="function"==typeof(o=function(o,r,i,a){"use strict";var s=n(1);function l(t){if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(t){if("string"==typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(t,e):void 0}}(t))){var e=0,n=function(){};return{s:n,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,r,i=!0,a=!1;return{s:function(){o=t[Symbol.iterator]()},n:function(){var t=o.next();return i=t.done,t},e:function(t){a=!0,r=t},f:function(){try{i||null==o.return||o.return()}finally{if(a)throw r}}}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n3&&void 0!==arguments[3]&&arguments[3];n.mutableListenerIds.push(n.listeners.on(t,e,o,r))},clearAll:function(){var t,e=l(n.mutableListenerIds);try{for(e.s();!(t=e.n()).done;){var o=t.value;n.listeners.offById(o)}}catch(t){e.e(t)}finally{e.f()}n.mutableListenerIds=[]}},this.mutableListenerIds=[],(this instanceof t?this.constructor:void 0)===t)throw new TypeError("Constructors for abstract class Module are not allowed.");this.config=o,this.eventsDispatcher=i}return(0,i.default)(t,[{key:"removeAllNodes",value:function(){for(var t in this.nodes){var e=this.nodes[t];e instanceof HTMLElement&&e.remove()}}},{key:"state",set:function(t){this.Editor=t}},{key:"isRtl",get:function(){return"rtl"===this.config.i18n.direction}}]),t}();o.default=u,u.displayName="Module",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var o=n(13);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(42),n(2),n(3),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a,s){"use strict";var l=n(8),c=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=c(r),i=c(i),a=c(a),s=l(s);var u=function(){function t(){(0,i.default)(this,t)}return(0,a.default)(t,null,[{key:"isSingleTag",value:function(t){return t.tagName&&["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"].includes(t.tagName)}},{key:"isLineBreakTag",value:function(t){return t&&t.tagName&&["BR","WBR"].includes(t.tagName)}},{key:"make",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=document.createElement(t);for(var a in Array.isArray(n)?(e=i.classList).add.apply(e,(0,r.default)(n)):n&&i.classList.add(n),o)Object.prototype.hasOwnProperty.call(o,a)&&(i[a]=o[a]);return i}},{key:"text",value:function(t){return document.createTextNode(t)}},{key:"svg",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:14,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:14,o=document.createElementNS("http://www.w3.org/2000/svg","svg");return o.classList.add("icon","icon--"+t),o.setAttribute("width",e+"px"),o.setAttribute("height",n+"px"),o.innerHTML=''),o}},{key:"append",value:function(t,e){Array.isArray(e)?e.forEach((function(e){return t.appendChild(e)})):t.appendChild(e)}},{key:"prepend",value:function(t,e){Array.isArray(e)?(e=e.reverse()).forEach((function(e){return t.prepend(e)})):t.prepend(e)}},{key:"swap",value:function(t,e){var n=document.createElement("div"),o=t.parentNode;o.insertBefore(n,t),o.insertBefore(t,e),o.insertBefore(e,n),o.removeChild(n)}},{key:"find",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,e=arguments.length>1?arguments[1]:void 0;return t.querySelector(e)}},{key:"get",value:function(t){return document.getElementById(t)}},{key:"findAll",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,e=arguments.length>1?arguments[1]:void 0;return t.querySelectorAll(e)}},{key:"findAllInputs",value:function(e){return s.array(e.querySelectorAll(t.allInputsSelector)).reduce((function(e,n){return t.isNativeInput(n)||t.containsOnlyInlineElements(n)?[].concat((0,r.default)(e),[n]):[].concat((0,r.default)(e),(0,r.default)(t.getDeepestBlockElements(n)))}),[])}},{key:"getDeepestNode",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=n?"lastChild":"firstChild",r=n?"previousSibling":"nextSibling";if(e&&e.nodeType===Node.ELEMENT_NODE&&e[o]){var i=e[o];if(t.isSingleTag(i)&&!t.isNativeInput(i)&&!t.isLineBreakTag(i))if(i[r])i=i[r];else{if(!i.parentNode[r])return i.parentNode;i=i.parentNode[r]}return this.getDeepestNode(i,n)}return e}},{key:"isElement",value:function(t){return!s.isNumber(t)&&t&&t.nodeType&&t.nodeType===Node.ELEMENT_NODE}},{key:"isFragment",value:function(t){return!s.isNumber(t)&&t&&t.nodeType&&t.nodeType===Node.DOCUMENT_FRAGMENT_NODE}},{key:"isContentEditable",value:function(t){return"true"===t.contentEditable}},{key:"isNativeInput",value:function(t){return!(!t||!t.tagName)&&["INPUT","TEXTAREA"].includes(t.tagName)}},{key:"canSetCaret",value:function(e){var n=!0;if(t.isNativeInput(e))switch(e.type){case"file":case"checkbox":case"radio":case"hidden":case"submit":case"button":case"image":case"reset":n=!1}else n=t.isContentEditable(e);return n}},{key:"isNodeEmpty",value:function(t){return!(this.isSingleTag(t)&&!this.isLineBreakTag(t))&&0===(this.isElement(t)&&this.isNativeInput(t)?t.value:t.textContent.replace("​","")).trim().length}},{key:"isLeaf",value:function(t){return!!t&&0===t.childNodes.length}},{key:"isEmpty",value:function(t){t.normalize();for(var e=[t];e.length>0;)if(t=e.shift()){if(this.isLeaf(t)&&!this.isNodeEmpty(t))return!1;t.childNodes&&e.push.apply(e,(0,r.default)(Array.from(t.childNodes)))}return!0}},{key:"isHTMLString",value:function(e){var n=t.make("div");return n.innerHTML=e,n.childElementCount>0}},{key:"getContentLength",value:function(e){return t.isNativeInput(e)?e.value.length:e.nodeType===Node.TEXT_NODE?e.length:e.textContent.length}},{key:"containsOnlyInlineElements",value:function(e){var n;return s.isString(e)?(n=document.createElement("div")).innerHTML=e:n=e,Array.from(n.children).every((function e(n){return!t.blockElements.includes(n.tagName.toLowerCase())&&Array.from(n.children).every(e)}))}},{key:"getDeepestBlockElements",value:function(e){return t.containsOnlyInlineElements(e)?[e]:Array.from(e.children).reduce((function(e,n){return[].concat((0,r.default)(e),(0,r.default)(t.getDeepestBlockElements(n)))}),[])}},{key:"getHolder",value:function(t){return s.isString(t)?document.getElementById(t):t}},{key:"isExtensionNode",value:function(t){return t&&["GRAMMARLY-EXTENSION"].includes(t.nodeName)}},{key:"isAnchor",value:function(t){return"a"===t.tagName.toLowerCase()}},{key:"offset",value:function(t){var e=t.getBoundingClientRect(),n=window.pageXOffset||document.documentElement.scrollLeft,o=window.pageYOffset||document.documentElement.scrollTop,r=e.top+o,i=e.left+n;return{top:r,left:i,bottom:r+e.height,right:i+e.width}}},{key:"allInputsSelector",get:function(){return"[contenteditable=true], textarea, input:not([type]), "+["text","password","email","number","search","tel","url"].map((function(t){return'input[type="'.concat(t,'"]')})).join(", ")}},{key:"blockElements",get:function(){return["address","article","aside","blockquote","canvas","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","noscript","ol","output","p","pre","ruby","section","table","tr","tfoot","ul","video"]}}]),t}();o.default=u,u.displayName="Dom",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o=n(69)("wks"),r=n(44),i=n(10).Symbol,a="function"==typeof i;(t.exports=function(t){return o[t]||(o[t]=a&&i[t]||(a?i:r)("Symbol."+t))}).store=o},function(t,e,n){var o=n(33),r=Math.min;t.exports=function(t){return t>0?r(o(t),9007199254740991):0}},function(t,e){var n=t.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},function(t,e,n){t.exports=!n(11)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e,n){var o=n(12),r=n(116),i=n(40),a=Object.defineProperty;e.f=n(18)?Object.defineProperty:function(t,e,n){if(o(t),e=i(e,!0),o(n),r)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){t.exports=n(147)},function(t,e){function n(t,e,n,o,r,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}t.exports=function(t){return function(){var e=this,o=arguments;return new Promise((function(r,i){var a=t.apply(e,o);function s(t){n(a,r,i,s,l,"next",t)}function l(t){n(a,r,i,s,l,"throw",t)}s(void 0)}))}}},function(t,e,n){var o=n(38);t.exports=function(t){return Object(o(t))}},function(t,e,n){var o=n(10),r=n(27),i=n(26),a=n(44)("src"),s=n(192),l=(""+s).split("toString");n(17).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var c="function"==typeof n;c&&(i(n,"name")||r(n,"name",e)),t[e]!==n&&(c&&(i(n,a)||r(n,a,t[e]?""+t[e]:l.join(String(e)))),t===o?t[e]=n:s?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[a]||s.call(this)}))},function(t,e,n){var o=n(0),r=n(11),i=n(38),a=/"/g,s=function(t,e,n,o){var r=String(i(t)),s="<"+e;return""!==n&&(s+=" "+n+'="'+String(o).replace(a,""")+'"'),s+">"+r+""};t.exports=function(t,e){var n={};n[t]=e(s),o(o.P+o.F*r((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3})),"String",n)}},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(7),n(14)],void 0===(i="function"==typeof(o=function(o,r,i,a,s){"use strict";var l=n(8),c=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=c(r),i=c(i),a=l(a),s=c(s);var u=function(){function t(){(0,r.default)(this,t),this.instance=null,this.selection=null,this.savedSelectionRange=null,this.isFakeBackgroundEnabled=!1,this.commandBackground="backColor",this.commandRemoveFormat="removeFormat"}return(0,i.default)(t,[{key:"removeFakeBackground",value:function(){this.isFakeBackgroundEnabled&&(this.isFakeBackgroundEnabled=!1,document.execCommand(this.commandRemoveFormat))}},{key:"setFakeBackground",value:function(){document.execCommand(this.commandBackground,!1,"#a8d6ff"),this.isFakeBackgroundEnabled=!0}},{key:"save",value:function(){this.savedSelectionRange=t.range}},{key:"restore",value:function(){if(this.savedSelectionRange){var t=window.getSelection();t.removeAllRanges(),t.addRange(this.savedSelectionRange)}}},{key:"clearSaved",value:function(){this.savedSelectionRange=null}},{key:"collapseToEnd",value:function(){var t=window.getSelection(),e=document.createRange();e.selectNodeContents(t.focusNode),e.collapse(!1),t.removeAllRanges(),t.addRange(e)}},{key:"findParentTag",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,o=window.getSelection(),r=null;if(!o||!o.anchorNode||!o.focusNode)return null;var i=[o.anchorNode,o.focusNode];return i.forEach((function(o){for(var i=n;i>0&&o.parentNode&&(o.tagName!==t||(r=o,e&&o.classList&&!o.classList.contains(e)&&(r=null),!r));)o=o.parentNode,i--})),r}},{key:"expandToTag",value:function(t){var e=window.getSelection();e.removeAllRanges();var n=document.createRange();n.selectNodeContents(t),e.addRange(n)}}],[{key:"isSelectionAtEditor",value:function(e){if(!e)return!1;var n=e.anchorNode||e.focusNode;n&&n.nodeType===Node.TEXT_NODE&&(n=n.parentNode);var o=null;return n&&n instanceof Element&&(o=n.closest(".".concat(t.CSS.editorZone))),!!o&&o.nodeType===Node.ELEMENT_NODE}},{key:"isRangeAtEditor",value:function(e){if(e){var n=e.startContainer;n&&n.nodeType===Node.TEXT_NODE&&(n=n.parentNode);var o=null;return n&&n instanceof Element&&(o=n.closest(".".concat(t.CSS.editorZone))),!!o&&o.nodeType===Node.ELEMENT_NODE}}},{key:"getRangeFromSelection",value:function(t){return t&&t.rangeCount?t.getRangeAt(0):null}},{key:"get",value:function(){return window.getSelection()}},{key:"setCursor",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=document.createRange(),o=window.getSelection();if(s.default.isNativeInput(t)){if(!s.default.canSetCaret(t))return;return t.focus(),t.selectionStart=t.selectionEnd=e,t.getBoundingClientRect()}return n.setStart(t,e),n.setEnd(t,e),o.removeAllRanges(),o.addRange(n),n.getBoundingClientRect()}},{key:"addFakeCursor",value:function(e){var n=t.range,o=s.default.make("span","codex-editor__fake-cursor");o.dataset.mutationFree="true",!n||e&&!e.contains(n.startContainer)||(n.collapse(),n.insertNode(o))}},{key:"removeFakeCursor",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body,e=s.default.find(t,".codex-editor__fake-cursor");e&&e.remove()}},{key:"CSS",get:function(){return{editorWrapper:"codex-editor",editorZone:"codex-editor__redactor"}}},{key:"anchorNode",get:function(){var t=window.getSelection();return t?t.anchorNode:null}},{key:"anchorElement",get:function(){var t=window.getSelection();if(!t)return null;var e=t.anchorNode;return e?s.default.isElement(e)?e:e.parentElement:null}},{key:"anchorOffset",get:function(){var t=window.getSelection();return t?t.anchorOffset:null}},{key:"isCollapsed",get:function(){var t=window.getSelection();return t?t.isCollapsed:null}},{key:"isAtEditor",get:function(){return this.isSelectionAtEditor(t.get())}},{key:"isSelectionExists",get:function(){return!!t.get().anchorNode}},{key:"range",get:function(){return this.getRangeFromSelection(this.get())}},{key:"rect",get:function(){var t,e=document.selection,n={x:0,y:0,width:0,height:0};if(e&&"Control"!==e.type)return t=(e=e).createRange(),n.x=t.boundingLeft,n.y=t.boundingTop,n.width=t.boundingWidth,n.height=t.boundingHeight,n;if(!window.getSelection)return a.log("Method window.getSelection is not supported","warn"),n;if(null===(e=window.getSelection()).rangeCount||isNaN(e.rangeCount))return a.log("Method SelectionUtils.rangeCount is not supported","warn"),n;if(0===e.rangeCount)return n;if((t=e.getRangeAt(0).cloneRange()).getBoundingClientRect&&(n=t.getBoundingClientRect()),0===n.x&&0===n.y){var o=document.createElement("span");if(o.getBoundingClientRect){o.appendChild(document.createTextNode("​")),t.insertNode(o),n=o.getBoundingClientRect();var r=o.parentNode;r.removeChild(o),r.normalize()}}return n}},{key:"text",get:function(){return window.getSelection?window.getSelection().toString():""}}]),t}();o.default=u,u.displayName="SelectionUtils",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var o=n(19),r=n(43);t.exports=n(18)?function(t,e,n){return o.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var o=n(63),r=n(38);t.exports=function(t){return o(r(t))}},function(t,e,n){"use strict";var o=n(11);t.exports=function(t,e){return!!t&&o((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},function(t,e,n){var o=n(361),r=n(362),i=n(148),a=n(363);t.exports=function(t,e){return o(t)||r(t,e)||i(t,e)||a()}},function(t,e,n){var o=n(32);t.exports=function(t,e,n){if(o(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,o){return t.call(e,n,o)};case 3:return function(n,o,r){return t.call(e,n,o,r)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){var n=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:n)(t)}},function(t,e,n){var o=n(64),r=n(43),i=n(28),a=n(40),s=n(26),l=n(116),c=Object.getOwnPropertyDescriptor;e.f=n(18)?c:function(t,e){if(t=i(t),e=a(e,!0),l)try{return c(t,e)}catch(t){}if(s(t,e))return r(!o.f.call(t,e),t[e])}},function(t,e,n){var o=n(0),r=n(17),i=n(11);t.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],a={};a[t]=e(n),o(o.S+o.F*i((function(){n(1)})),"Object",a)}},function(t,e,n){var o=n(31),r=n(63),i=n(22),a=n(16),s=n(132);t.exports=function(t,e){var n=1==t,l=2==t,c=3==t,u=4==t,f=6==t,d=5==t||f,p=e||s;return function(e,s,h){for(var v,g,y=i(e),b=r(y),m=o(s,h,3),k=a(b.length),x=0,w=n?p(e,k):l?p(e,0):void 0;k>x;x++)if((d||x in b)&&(g=m(v=b[x],x,y),t))if(n)w[x]=g;else if(g)switch(t){case 3:return!0;case 5:return v;case 6:return x;case 2:w.push(v)}else if(u)return!1;return f?-1:c||u?u:w}}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";if(n(18)){var o=n(45),r=n(10),i=n(11),a=n(0),s=n(80),l=n(109),c=n(31),u=n(57),f=n(43),d=n(27),p=n(58),h=n(33),v=n(16),g=n(143),y=n(47),b=n(40),m=n(26),k=n(65),x=n(13),w=n(22),S=n(101),T=n(48),E=n(50),B=n(49).f,C=n(103),_=n(44),I=n(15),O=n(36),M=n(70),R=n(66),A=n(105),N=n(55),L=n(73),P=n(56),D=n(104),j=n(134),F=n(19),H=n(34),U=F.f,z=H.f,W=r.RangeError,Y=r.TypeError,V=r.Uint8Array,X=Array.prototype,K=l.ArrayBuffer,G=l.DataView,Z=O(0),q=O(2),J=O(3),$=O(4),Q=O(5),tt=O(6),et=M(!0),nt=M(!1),ot=A.values,rt=A.keys,it=A.entries,at=X.lastIndexOf,st=X.reduce,lt=X.reduceRight,ct=X.join,ut=X.sort,ft=X.slice,dt=X.toString,pt=X.toLocaleString,ht=I("iterator"),vt=I("toStringTag"),gt=_("typed_constructor"),yt=_("def_constructor"),bt=s.CONSTR,mt=s.TYPED,kt=s.VIEW,xt=O(1,(function(t,e){return Bt(R(t,t[yt]),e)})),wt=i((function(){return 1===new V(new Uint16Array([1]).buffer)[0]})),St=!!V&&!!V.prototype.set&&i((function(){new V(1).set({})})),Tt=function(t,e){var n=h(t);if(n<0||n%e)throw W("Wrong offset!");return n},Et=function(t){if(x(t)&&mt in t)return t;throw Y(t+" is not a typed array!")},Bt=function(t,e){if(!x(t)||!(gt in t))throw Y("It is not a typed array constructor!");return new t(e)},Ct=function(t,e){return _t(R(t,t[yt]),e)},_t=function(t,e){for(var n=0,o=e.length,r=Bt(t,o);o>n;)r[n]=e[n++];return r},It=function(t,e,n){U(t,e,{get:function(){return this._d[n]}})},Ot=function(t){var e,n,o,r,i,a,s=w(t),l=arguments.length,u=l>1?arguments[1]:void 0,f=void 0!==u,d=C(s);if(null!=d&&!S(d)){for(a=d.call(s),o=[],e=0;!(i=a.next()).done;e++)o.push(i.value);s=o}for(f&&l>2&&(u=c(u,arguments[2],2)),e=0,n=v(s.length),r=Bt(this,n);n>e;e++)r[e]=f?u(s[e],e):s[e];return r},Mt=function(){for(var t=0,e=arguments.length,n=Bt(this,e);e>t;)n[t]=arguments[t++];return n},Rt=!!V&&i((function(){pt.call(new V(1))})),At=function(){return pt.apply(Rt?ft.call(Et(this)):Et(this),arguments)},Nt={copyWithin:function(t,e){return j.call(Et(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return $(Et(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return D.apply(Et(this),arguments)},filter:function(t){return Ct(this,q(Et(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Q(Et(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(Et(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Z(Et(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return nt(Et(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return et(Et(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return ct.apply(Et(this),arguments)},lastIndexOf:function(t){return at.apply(Et(this),arguments)},map:function(t){return xt(Et(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return st.apply(Et(this),arguments)},reduceRight:function(t){return lt.apply(Et(this),arguments)},reverse:function(){for(var t,e=Et(this).length,n=Math.floor(e/2),o=0;o1?arguments[1]:void 0)},sort:function(t){return ut.call(Et(this),t)},subarray:function(t,e){var n=Et(this),o=n.length,r=y(t,o);return new(R(n,n[yt]))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,v((void 0===e?o:y(e,o))-r))}},Lt=function(t,e){return Ct(this,ft.call(Et(this),t,e))},Pt=function(t){Et(this);var e=Tt(arguments[1],1),n=this.length,o=w(t),r=v(o.length),i=0;if(r+e>n)throw W("Wrong length!");for(;i255?255:255&o),r.v[p](n*e+r.o,o,wt)}(this,n,t)},enumerable:!0})};m?(h=n((function(t,n,o,r){u(t,h,c,"_d");var i,a,s,l,f=0,p=0;if(x(n)){if(!(n instanceof K||"ArrayBuffer"==(l=k(n))||"SharedArrayBuffer"==l))return mt in n?_t(h,n):Ot.call(h,n);i=n,p=Tt(o,e);var y=n.byteLength;if(void 0===r){if(y%e)throw W("Wrong length!");if((a=y-p)<0)throw W("Wrong length!")}else if((a=v(r)*e)+p>y)throw W("Wrong length!");s=a/e}else s=g(n),i=new K(a=s*e);for(d(t,"_d",{b:i,o:p,l:a,e:s,v:new G(i)});fdocument.F=Object<\/script>"),t.close(),l=t.F;o--;)delete l.prototype[i[o]];return l()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=o(t),n=new s,s.prototype=null,n[a]=t):n=l(),void 0===e?n:r(n,e)}},function(t,e,n){var o=n(118),r=n(88).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,r)}},function(t,e,n){var o=n(26),r=n(22),i=n(87)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),o(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,n){var o=n(15)("unscopables"),r=Array.prototype;null==r[o]&&n(27)(r,o,{}),t.exports=function(t){r[o][t]=!0}},function(t,e,n){var o=n(13);t.exports=function(t,e){if(!o(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},function(t,e,n){var o=n(19).f,r=n(26),i=n(15)("toStringTag");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&o(t,i,{configurable:!0,value:e})}},function(t,e,n){var o=n(0),r=n(38),i=n(11),a=n(91),s="["+a+"]",l=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),u=function(t,e,n){var r={},s=i((function(){return!!a[t]()||"​…"!="​…"[t]()})),l=r[t]=s?e(f):a[t];n&&(r[n]=l),o(o.P+o.F*s,"String",r)},f=u.trim=function(t,e){return t=String(r(t)),1&e&&(t=t.replace(l,"")),2&e&&(t=t.replace(c,"")),t};t.exports=u},function(t,e){t.exports={}},function(t,e,n){"use strict";var o=n(10),r=n(19),i=n(18),a=n(15)("species");t.exports=function(t){var e=o[t];i&&e&&!e[a]&&r.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports=function(t,e,n,o){if(!(t instanceof e)||void 0!==o&&o in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var o=n(23);t.exports=function(t,e,n){for(var r in e)o(t,r,e[r],n);return t}},function(t,e){function n(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?t.exports=n=function(t){return typeof t}:t.exports=n=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(e)}t.exports=n},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(150)],void 0===(i="function"==typeof(o=function(o,r,i,a){"use strict";var s=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=s(r),i=s(i),a=s(a);var l=function(){function t(){(0,r.default)(this,t)}return(0,i.default)(t,null,[{key:"ui",value:function(e,n){return t._t(e,n)}},{key:"t",value:function(e,n){return t._t(e,n)}},{key:"setDictionary",value:function(e){t.currentDictionary=e}},{key:"_t",value:function(e,n){var o=t.getNamespace(e);return o&&o[n]?o[n]:n}},{key:"getNamespace",value:function(e){return e.split(".").reduce((function(t,e){return t&&Object.keys(t).length?t[e]:{}}),t.currentDictionary)}}]),t}();o.default=l,l.displayName="I18n",l.currentDictionary=a.default,t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(30),n(20),n(21),n(42),n(2),n(3),n(152),n(113),n(5),n(6),n(4),n(14),n(7),n(112),n(25),n(81)],void 0===(i="function"==typeof(o=function(t,e,o,r,i,a,s,l,c,u,f,d,p,h,v,g,y){"use strict";var b,m=n(8),k=n(1);function x(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.BlockToolAPI=void 0,e=k(e),o=k(o),r=k(r),i=k(i),a=k(a),s=k(s),l=k(l),c=k(c),u=k(u),f=k(f),d=k(d),p=k(p),h=m(h),v=k(v),g=k(g),y=k(y),t.BlockToolAPI=b,function(t){t.APPEND_CALLBACK="appendCallback",t.RENDERED="rendered",t.MOVED="moved",t.UPDATED="updated",t.REMOVED="removed",t.ON_PASTE="onPaste"}(b||(t.BlockToolAPI=b={}));var w=function(t){(0,u.default)(T,t);var n,y,m,k,w,S=(n=T,function(){var t,e=(0,d.default)(n);if(x()){var o=(0,d.default)(this).constructor;t=Reflect.construct(e,arguments,o)}else t=e.apply(this,arguments);return(0,f.default)(this,t)});function T(t){var e,n=t.id,o=void 0===n?h.generateBlockId():n,r=t.data,s=t.tool,c=t.api,u=t.readOnly,f=t.tunesData;return(0,a.default)(this,T),(e=S.call(this)).cachedInputs=[],e.tunesInstances=new Map,e.defaultTunesInstances=new Map,e.unavailableTunesData={},e.inputIndex=0,e.modificationDebounceTimer=450,e.didMutated=h.debounce((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=t instanceof InputEvent||!t.some((function(t){var e=t.addedNodes,n=void 0===e?[]:e,o=t.removedNodes;return[].concat((0,i.default)(Array.from(n)),(0,i.default)(Array.from(o))).some((function(t){return p.default.isElement(t)&&"true"===t.dataset.mutationFree}))}));n&&(e.cachedInputs=[],e.updateCurrentInput(),e.call(b.UPDATED),e.emit("didMutated",(0,l.default)(e)))}),e.modificationDebounceTimer),e.handleFocus=function(){e.cachedInputs=[],e.updateCurrentInput()},e.name=s.name,e.id=o,e.settings=s.settings,e.config=s.settings.config||{},e.api=c,e.blockAPI=new v.default((0,l.default)(e)),e.mutationObserver=new MutationObserver(e.didMutated),e.tool=s,e.toolInstance=s.create(r,e.blockAPI,u),e.tunes=s.tunes,e.composeTunes(f),e.holder=e.compose(),e}return(0,s.default)(T,[{key:"call",value:function(t,e){if(h.isFunction(this.toolInstance[t])){t===b.APPEND_CALLBACK&&h.log("`appendCallback` hook is deprecated and will be removed in the next major release. Use `rendered` hook instead","warn");try{this.toolInstance[t].call(this.toolInstance,e)}catch(e){h.log("Error during '".concat(t,"' call: ").concat(e.message),"error")}}}},{key:"mergeWith",value:(w=(0,r.default)(o.default.mark((function t(e){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.toolInstance.merge(e);case 2:case"end":return t.stop()}}),t,this)}))),function(t){return w.apply(this,arguments)})},{key:"save",value:(k=(0,r.default)(o.default.mark((function t(){var n,r,a,s,l=this;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.toolInstance.save(this.pluginsContent);case 2:return n=t.sent,r=this.unavailableTunesData,[].concat((0,i.default)(this.tunesInstances.entries()),(0,i.default)(this.defaultTunesInstances.entries())).forEach((function(t){var n=(0,e.default)(t,2),o=n[0],i=n[1];if(h.isFunction(i.save))try{r[o]=i.save()}catch(t){h.log("Tune ".concat(i.constructor.name," save method throws an Error %o"),"warn",t)}})),a=window.performance.now(),t.abrupt("return",Promise.resolve(n).then((function(t){return s=window.performance.now(),{id:l.id,tool:l.name,data:t,tunes:r,time:s-a}})).catch((function(t){h.log("Saving proccess for ".concat(l.name," tool failed due to the ").concat(t),"log","red")})));case 7:case"end":return t.stop()}}),t,this)}))),function(){return k.apply(this,arguments)})},{key:"validate",value:(m=(0,r.default)(o.default.mark((function t(e){var n;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=!0,!(this.toolInstance.validate instanceof Function)){t.next=5;break}return t.next=4,this.toolInstance.validate(e);case 4:n=t.sent;case 5:return t.abrupt("return",n);case 6:case"end":return t.stop()}}),t,this)}))),function(t){return m.apply(this,arguments)})},{key:"renderTunes",value:function(){var t=document.createDocumentFragment(),e=document.createDocumentFragment();return this.tunesInstances.forEach((function(e){p.default.append(t,e.render())})),this.defaultTunesInstances.forEach((function(t){p.default.append(e,t.render())})),[t,e]}},{key:"updateCurrentInput",value:function(){this.currentInput=p.default.isNativeInput(document.activeElement)||!g.default.anchorNode?document.activeElement:g.default.anchorNode}},{key:"willSelect",value:function(){this.mutationObserver.observe(this.holder.firstElementChild,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),this.addInputEvents()}},{key:"willUnselect",value:function(){this.mutationObserver.disconnect(),this.removeInputEvents()}},{key:"dispatchChange",value:function(){this.didMutated()}},{key:"destroy",value:function(){(0,c.default)((0,d.default)(T.prototype),"destroy",this).call(this),h.isFunction(this.toolInstance.destroy)&&this.toolInstance.destroy()}},{key:"renderSettings",value:function(){if(h.isFunction(this.toolInstance.renderSettings))return this.toolInstance.renderSettings()}},{key:"getActiveToolboxEntry",value:(y=(0,r.default)(o.default.mark((function t(){var n,r,i;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(1!==(n=this.tool.toolbox).length){t.next=3;break}return t.abrupt("return",Promise.resolve(this.tool.toolbox[0]));case 3:return t.next=5,this.data;case 5:return r=t.sent,i=n,t.abrupt("return",i.find((function(t){return Object.entries(t.data).some((function(t){var n=(0,e.default)(t,2),o=n[0],i=n[1];return r[o]&&h.equals(r[o],i)}))})));case 8:case"end":return t.stop()}}),t,this)}))),function(){return y.apply(this,arguments)})},{key:"compose",value:function(){var t=p.default.make("div",T.CSS.wrapper),e=p.default.make("div",T.CSS.content),n=this.toolInstance.render();e.appendChild(n);var o=e;return[].concat((0,i.default)(this.tunesInstances.values()),(0,i.default)(this.defaultTunesInstances.values())).forEach((function(t){if(h.isFunction(t.wrap))try{o=t.wrap(o)}catch(e){h.log("Tune ".concat(t.constructor.name," wrap method throws an Error %o"),"warn",e)}})),t.appendChild(o),t}},{key:"composeTunes",value:function(t){var n=this;Array.from(this.tunes.values()).forEach((function(e){(e.isInternal?n.defaultTunesInstances:n.tunesInstances).set(e.name,e.create(t[e.name],n.blockAPI))})),Object.entries(t).forEach((function(t){var o=(0,e.default)(t,2),r=o[0],i=o[1];n.tunesInstances.has(r)||(n.unavailableTunesData[r]=i)}))}},{key:"addInputEvents",value:function(){var t=this;this.inputs.forEach((function(e){e.addEventListener("focus",t.handleFocus),p.default.isNativeInput(e)&&e.addEventListener("input",t.didMutated)}))}},{key:"removeInputEvents",value:function(){var t=this;this.inputs.forEach((function(e){e.removeEventListener("focus",t.handleFocus),p.default.isNativeInput(e)&&e.removeEventListener("input",t.didMutated)}))}},{key:"inputs",get:function(){if(0!==this.cachedInputs.length)return this.cachedInputs;var t=p.default.findAllInputs(this.holder);return this.inputIndex>t.length-1&&(this.inputIndex=t.length-1),this.cachedInputs=t,t}},{key:"currentInput",get:function(){return this.inputs[this.inputIndex]},set:function(t){var e=this.inputs.findIndex((function(e){return e===t||e.contains(t)}));-1!==e&&(this.inputIndex=e)}},{key:"firstInput",get:function(){return this.inputs[0]}},{key:"lastInput",get:function(){var t=this.inputs;return t[t.length-1]}},{key:"nextInput",get:function(){return this.inputs[this.inputIndex+1]}},{key:"previousInput",get:function(){return this.inputs[this.inputIndex-1]}},{key:"data",get:function(){return this.save().then((function(t){return t&&!h.isEmpty(t.data)?t.data:{}}))}},{key:"sanitize",get:function(){return this.tool.sanitizeConfig}},{key:"mergeable",get:function(){return h.isFunction(this.toolInstance.merge)}},{key:"isEmpty",get:function(){var t=p.default.isEmpty(this.pluginsContent),e=!this.hasMedia;return t&&e}},{key:"hasMedia",get:function(){return!!this.holder.querySelector(["img","iframe","video","audio","source","input","textarea","twitterwidget"].join(","))}},{key:"focused",set:function(t){this.holder.classList.toggle(T.CSS.focused,t)},get:function(){return this.holder.classList.contains(T.CSS.focused)}},{key:"selected",set:function(t){t?(this.holder.classList.add(T.CSS.selected),g.default.addFakeCursor(this.holder)):(this.holder.classList.remove(T.CSS.selected),g.default.removeFakeCursor(this.holder))},get:function(){return this.holder.classList.contains(T.CSS.selected)}},{key:"stretched",set:function(t){this.holder.classList.toggle(T.CSS.wrapperStretched,t)},get:function(){return this.holder.classList.contains(T.CSS.wrapperStretched)}},{key:"dropTarget",set:function(t){this.holder.classList.toggle(T.CSS.dropTarget,t)}},{key:"pluginsContent",get:function(){var t=this.holder.querySelector(".".concat(T.CSS.content));if(t&&t.childNodes.length)for(var e=t.childNodes.length-1;e>=0;e--){var n=t.childNodes[e];if(!p.default.isExtensionNode(n))return n}return null}}],[{key:"CSS",get:function(){return{wrapper:"ce-block",wrapperStretched:"ce-block--stretched",content:"ce-block__content",focused:"ce-block--focused",selected:"ce-block--selected",dropTarget:"ce-block--drop-target"}}}]),T}(y.default);t.default=w,w.displayName="Block"})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(381),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a,s){"use strict";var l=n(8),c=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=c(r),i=c(i),a=c(a),s=l(s);var u=function(){function t(e){var n=this;(0,r.default)(this,t),this.iterator=null,this.activated=!1,this.onKeyDown=function(e){if(n.isEventReadyForHandling(e))switch(t.usedKeys.includes(e.keyCode)&&e.preventDefault(),e.keyCode){case s.keyCodes.TAB:n.handleTabPress(e);break;case s.keyCodes.LEFT:case s.keyCodes.UP:n.flipLeft();break;case s.keyCodes.RIGHT:case s.keyCodes.DOWN:n.flipRight();break;case s.keyCodes.ENTER:n.handleEnterPress(e)}},this.iterator=new a.default(e.items,e.focusedItemClass),this.activateCallback=e.activateCallback,this.allowedKeys=e.allowedKeys||t.usedKeys}return(0,i.default)(t,[{key:"activate",value:function(t){this.activated=!0,t&&this.iterator.setItems(t),document.addEventListener("keydown",this.onKeyDown)}},{key:"deactivate",value:function(){this.activated=!1,this.dropCursor(),document.removeEventListener("keydown",this.onKeyDown)}},{key:"focusFirst",value:function(){this.dropCursor(),this.flipRight()}},{key:"flipLeft",value:function(){this.iterator.previous(),this.flipCallback()}},{key:"flipRight",value:function(){this.iterator.next(),this.flipCallback()}},{key:"hasFocus",value:function(){return!!this.iterator.currentItem}},{key:"dropCursor",value:function(){this.iterator.dropCursor()}},{key:"isEventReadyForHandling",value:function(t){return this.activated&&this.allowedKeys.includes(t.keyCode)}},{key:"handleTabPress",value:function(t){switch(t.shiftKey?a.default.directions.LEFT:a.default.directions.RIGHT){case a.default.directions.RIGHT:this.flipRight();break;case a.default.directions.LEFT:this.flipLeft()}}},{key:"handleEnterPress",value:function(t){this.activated&&(this.iterator.currentItem&&this.iterator.currentItem.click(),s.isFunction(this.activateCallback)&&this.activateCallback(this.iterator.currentItem),t.preventDefault(),t.stopPropagation())}},{key:"flipCallback",value:function(){this.iterator.currentItem&&this.iterator.currentItem.scrollIntoViewIfNeeded()}}],[{key:"usedKeys",get:function(){return[s.keyCodes.TAB,s.keyCodes.LEFT,s.keyCodes.RIGHT,s.keyCodes.ENTER,s.keyCodes.UP,s.keyCodes.DOWN]}}]),t}();o.default=u,u.displayName="Flipper",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o=n(37);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var o=n(37),r=n(15)("toStringTag"),i="Arguments"==o(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),r))?n:i?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,n){var o=n(12),r=n(32),i=n(15)("species");t.exports=function(t,e){var n,a=o(t).constructor;return void 0===a||null==(n=o(a)[i])?e:r(n)}},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(7),n(379)],void 0===(i="function"==typeof(o=function(t,e,o){"use strict";var r=n(1),i=n(8);function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={tags:e},r=new o.default(n);return r.clean(t)}function s(t,n){return Array.isArray(t)?(i=n,t.map((function(t){return s(t,i)}))):e.isObject(t)?function(t,n){var o,r={};for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var a=t[i],l=(o=n[i],e.isObject(o)||e.isBoolean(o)||e.isFunction(o)?n[i]:n);r[i]=s(a,l)}return r}(t,n):e.isString(t)?(o=t,r=n,e.isObject(r)?a(o,r):!1===r?a(o,{}):o):t;var o,r,i}Object.defineProperty(t,"__esModule",{value:!0}),t.sanitizeBlocks=function(t,n){return t.map((function(t){var o=e.isFunction(n)?n(t.tool):n;return e.isEmpty(o)||(t.data=s(t.data,o)),t}))},t.clean=a,e=i(e),o=r(o)})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(7)],void 0===(i="function"==typeof(o=function(t,e,o,r){"use strict";var i,a,s,l,c,u,f=n(8),d=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.InternalTuneSettings=t.InternalInlineToolSettings=t.InternalBlockToolSettings=t.CommonInternalSettings=t.UserSettings=t.ToolType=void 0,e=d(e),o=d(o),r=f(r),t.ToolType=i,function(t){t[t.Block=0]="Block",t[t.Inline=1]="Inline",t[t.Tune=2]="Tune"}(i||(t.ToolType=i={})),t.UserSettings=a,function(t){t.Shortcut="shortcut",t.Toolbox="toolbox",t.EnabledInlineTools="inlineToolbar",t.EnabledBlockTunes="tunes",t.Config="config"}(a||(t.UserSettings=a={})),t.CommonInternalSettings=s,function(t){t.Shortcut="shortcut",t.SanitizeConfig="sanitize"}(s||(t.CommonInternalSettings=s={})),t.InternalBlockToolSettings=l,function(t){t.IsEnabledLineBreaks="enableLineBreaks",t.Toolbox="toolbox",t.ConversionConfig="conversionConfig",t.IsReadOnlySupported="isReadOnlySupported",t.PasteConfig="pasteConfig"}(l||(t.InternalBlockToolSettings=l={})),t.InternalInlineToolSettings=c,function(t){t.IsInline="isInline",t.Title="title"}(c||(t.InternalInlineToolSettings=c={})),t.InternalTuneSettings=u,function(t){t.IsTune="isTune"}(u||(t.InternalTuneSettings=u={}));var p=function(){function t(n){var o=n.name,r=n.constructable,i=n.config,a=n.api,s=n.isDefault,l=n.isInternal,c=void 0!==l&&l,u=n.defaultPlaceholder;(0,e.default)(this,t),this.api=a,this.name=o,this.constructable=r,this.config=i,this.isDefault=s,this.isInternal=c,this.defaultPlaceholder=u}return(0,o.default)(t,[{key:"reset",value:function(){if(r.isFunction(this.constructable.reset))return this.constructable.reset()}},{key:"prepare",value:function(){if(r.isFunction(this.constructable.prepare))return this.constructable.prepare({toolName:this.name,config:this.settings})}},{key:"isInline",value:function(){return this.type===i.Inline}},{key:"isBlock",value:function(){return this.type===i.Block}},{key:"isTune",value:function(){return this.type===i.Tune}},{key:"settings",get:function(){var t=this.config[a.Config]||{};return this.isDefault&&!("placeholder"in t)&&this.defaultPlaceholder&&(t.placeholder=this.defaultPlaceholder),t}},{key:"shortcut",get:function(){var t=this.constructable[s.Shortcut];return this.config[a.Shortcut]||t}},{key:"sanitizeConfig",get:function(){return this.constructable[s.SanitizeConfig]||{}}}]),t}();t.default=p,p.displayName="BaseTool"})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o=n(17),r=n(10),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:o.version,mode:n(45)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e,n){var o=n(28),r=n(16),i=n(47);t.exports=function(t){return function(e,n,a){var s,l=o(e),c=r(l.length),u=i(a,c);if(t&&n!=n){for(;c>u;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((t||u in l)&&l[u]===n)return t||u||0;return!t&&-1}}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var o=n(37);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,n){var o=n(15)("iterator"),r=!1;try{var i=[7][o]();i.return=function(){r=!0},Array.from(i,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],a=i[o]();a.next=function(){return{done:n=!0}},i[o]=function(){return a},t(i)}catch(t){}return n}},function(t,e,n){"use strict";var o=n(12);t.exports=function(){var t=o(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){"use strict";var o=n(65),r=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==o(t))throw new TypeError("RegExp#exec called on incompatible receiver");return r.call(t,e)}},function(t,e,n){"use strict";n(136);var o=n(23),r=n(27),i=n(11),a=n(38),s=n(15),l=n(106),c=s("species"),u=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),f=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var d=s(t),p=!i((function(){var e={};return e[d]=function(){return 7},7!=""[t](e)})),h=p?!i((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[c]=function(){return n}),n[d](""),!e})):void 0;if(!p||!h||"replace"===t&&!u||"split"===t&&!f){var v=/./[d],g=n(a,d,""[t],(function(t,e,n,o,r){return e.exec===l?p&&!r?{done:!0,value:v.call(e,n,o)}:{done:!0,value:t.call(n,e,o)}:{done:!1}})),y=g[0],b=g[1];o(String.prototype,t,y),r(RegExp.prototype,d,2==e?function(t,e){return b.call(t,this,e)}:function(t){return b.call(t,this)})}}},function(t,e,n){var o=n(31),r=n(131),i=n(101),a=n(12),s=n(16),l=n(103),c={},u={};(e=t.exports=function(t,e,n,f,d){var p,h,v,g,y=d?function(){return t}:l(t),b=o(n,f,e?2:1),m=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(i(y)){for(p=s(t.length);p>m;m++)if((g=e?b(a(h=t[m])[0],h[1]):b(t[m]))===c||g===u)return g}else for(v=y.call(t);!(h=v.next()).done;)if((g=r(v,b,h.value,e))===c||g===u)return g}).BREAK=c,e.RETURN=u},function(t,e,n){var o=n(10).navigator;t.exports=o&&o.userAgent||""},function(t,e,n){"use strict";var o=n(10),r=n(0),i=n(23),a=n(58),s=n(41),l=n(77),c=n(57),u=n(13),f=n(11),d=n(73),p=n(53),h=n(92);t.exports=function(t,e,n,v,g,y){var b=o[t],m=b,k=g?"set":"add",x=m&&m.prototype,w={},S=function(t){var e=x[t];i(x,t,"delete"==t||"has"==t?function(t){return!(y&&!u(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!u(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof m&&(y||x.forEach&&!f((function(){(new m).entries().next()})))){var T=new m,E=T[k](y?{}:-0,1)!=T,B=f((function(){T.has(1)})),C=d((function(t){new m(t)})),_=!y&&f((function(){for(var t=new m,e=5;e--;)t[k](e,e);return!t.has(-0)}));C||((m=e((function(e,n){c(e,m,t);var o=h(new b,e,m);return null!=n&&l(n,g,o[k],o),o}))).prototype=x,x.constructor=m),(B||_)&&(S("delete"),S("has"),g&&S("get")),(_||E)&&S(k),y&&x.clear&&delete x.clear}else m=v.getConstructor(e,t,g,k),a(m.prototype,n),s.NEED=!0;return p(m,t),w[t]=m,r(r.G+r.W+r.F*(m!=b),w),y||v.setStrong(m,t,g),m}},function(t,e,n){for(var o,r=n(10),i=n(27),a=n(44),s=a("typed_array"),l=a("view"),c=!(!r.ArrayBuffer||!r.DataView),u=c,f=0,d="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");f<9;)(o=r[d[f++]])?(i(o.prototype,s,!0),i(o.prototype,l,!0)):u=!1;t.exports={ABV:c,CONSTR:u,TYPED:s,VIEW:l}},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a){"use strict";var s=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=s(r),i=s(i);var l=function(){function t(){(0,r.default)(this,t),this.subscribers={}}return(0,i.default)(t,[{key:"on",value:function(t,e){t in this.subscribers||(this.subscribers[t]=[]),this.subscribers[t].push(e)}},{key:"once",value:function(t,e){var n=this;t in this.subscribers||(this.subscribers[t]=[]),this.subscribers[t].push((function o(r){var i=e(r),a=n.subscribers[t].indexOf(o);return-1!==a&&n.subscribers[t].splice(a,1),i}))}},{key:"emit",value:function(t,e){!(0,a.isEmpty)(this.subscribers)&&this.subscribers[t]&&this.subscribers[t].reduce((function(t,e){return e(t)||t}),e)}},{key:"off",value:function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.Editor.BlockManager.currentBlock;if(this.toolboxInstance.close(),this.Editor.BlockSettings.close(),t){this.hoveredBlock=t;var e,n=t.holder,o=this.Editor.UI.isMobile,r=t.pluginsContent,i=window.getComputedStyle(r),a=parseInt(i.paddingTop,10),s=n.offsetHeight;e=o?n.offsetTop+s:n.offsetTop+a,this.nodes.wrapper.style.top="".concat(Math.floor(e),"px"),1===this.Editor.BlockManager.blocks.length&&t.isEmpty?this.blockTunesToggler.hide():this.blockTunesToggler.show(),this.open()}}},{key:"close",value:function(){this.Editor.ReadOnly.isEnabled||(this.nodes.wrapper.classList.remove(this.CSS.toolbarOpened),this.blockActions.hide(),this.toolboxInstance.close(),this.Editor.BlockSettings.close())}},{key:"open",value:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];!(arguments.length>1&&void 0!==arguments[1])||arguments[1],f.delay((function(){t.nodes.wrapper.classList.add(t.CSS.toolbarOpened),e?t.blockActions.show():t.blockActions.hide()}),50)()}},{key:"make",value:function(){var t=this;this.nodes.wrapper=u.default.make("div",this.CSS.toolbar),["content","actions"].forEach((function(e){t.nodes[e]=u.default.make("div",t.CSS[e])})),u.default.append(this.nodes.wrapper,this.nodes.content),u.default.append(this.nodes.content,this.nodes.actions),this.nodes.plusButton=u.default.make("div",this.CSS.plusButton),u.default.append(this.nodes.plusButton,u.default.svg("plus",16,16)),u.default.append(this.nodes.actions,this.nodes.plusButton),this.readOnlyMutableListeners.on(this.nodes.plusButton,"click",(function(){t.tooltip.hide(!0),t.plusButtonClicked()}),!1);var e=u.default.make("div");e.appendChild(document.createTextNode(d.default.ui(p.I18nInternalNS.ui.toolbar.toolbox,"Add"))),e.appendChild(u.default.make("div",this.CSS.plusButtonShortcut,{textContent:"⇥ Tab"})),this.tooltip.onHover(this.nodes.plusButton,e,{hidingDelay:400}),this.nodes.settingsToggler=u.default.make("span",this.CSS.settingsToggler);var n=u.default.svg("dots",16,16);u.default.append(this.nodes.settingsToggler,n),u.default.append(this.nodes.actions,this.nodes.settingsToggler),this.tooltip.onHover(this.nodes.settingsToggler,d.default.ui(p.I18nInternalNS.ui.blockTunes.toggler,"Click to tune"),{hidingDelay:400}),u.default.append(this.nodes.actions,this.makeToolbox()),u.default.append(this.nodes.actions,this.Editor.BlockSettings.nodes.wrapper),u.default.append(this.Editor.UI.nodes.wrapper,this.nodes.wrapper)}},{key:"makeToolbox",value:function(){var t=this;return this.toolboxInstance=new v.default({api:this.Editor.API.methods,tools:this.Editor.Tools.blockTools,i18nLabels:{filter:d.default.ui(p.I18nInternalNS.ui.toolbar.toolbox,"Filter"),nothingFound:d.default.ui(p.I18nInternalNS.ui.toolbar.toolbox,"Nothing found")}}),this.toolboxInstance.on(v.ToolboxEvent.Opened,(function(){t.Editor.UI.nodes.wrapper.classList.add(t.CSS.openedToolboxHolderModifier)})),this.toolboxInstance.on(v.ToolboxEvent.Closed,(function(){t.Editor.UI.nodes.wrapper.classList.remove(t.CSS.openedToolboxHolderModifier)})),this.toolboxInstance.on(v.ToolboxEvent.BlockAdded,(function(e){var n=e.block,o=t.Editor,r=o.BlockManager,i=o.Caret,a=r.getBlockById(n.id);0===a.inputs.length&&(a===r.lastBlock?(r.insertAtEnd(),i.setToBlock(r.lastBlock)):i.setToBlock(r.nextBlock))})),this.toolboxInstance.make()}},{key:"plusButtonClicked",value:function(){this.Editor.BlockManager.currentBlock=this.hoveredBlock,this.toolboxInstance.toggle()}},{key:"enableModuleBindings",value:function(){var t=this;this.readOnlyMutableListeners.on(this.nodes.settingsToggler,"mousedown",(function(e){e.stopPropagation(),t.settingsTogglerClicked(),t.toolboxInstance.close(),t.tooltip.hide(!0)}),!0),f.isMobileScreen()||this.eventsDispatcher.on(this.Editor.UI.events.blockHovered,(function(e){t.Editor.BlockSettings.opened||t.toolboxInstance.opened||t.moveAndOpen(e.block)}))}},{key:"disableModuleBindings",value:function(){this.readOnlyMutableListeners.clearAll()}},{key:"settingsTogglerClicked",value:function(){this.Editor.BlockManager.currentBlock=this.hoveredBlock,this.Editor.BlockSettings.opened?this.Editor.BlockSettings.close():this.Editor.BlockSettings.open(this.hoveredBlock)}},{key:"drawUI",value:function(){this.Editor.BlockSettings.make(),this.make()}},{key:"destroy",value:function(){this.removeAllNodes(),this.toolboxInstance&&this.toolboxInstance.destroy(),this.tooltip.destroy()}},{key:"CSS",get:function(){return{toolbar:"ce-toolbar",content:"ce-toolbar__content",actions:"ce-toolbar__actions",actionsOpened:"ce-toolbar__actions--opened",toolbarOpened:"ce-toolbar--opened",openedToolboxHolderModifier:"codex-editor--toolbox-opened",plusButton:"ce-toolbar__plus",plusButtonShortcut:"ce-toolbar__plus-shortcut",settingsToggler:"ce-toolbar__settings-btn",settingsTogglerHidden:"ce-toolbar__settings-btn--hidden"}}},{key:"opened",get:function(){return this.nodes.wrapper.classList.contains(this.CSS.toolbarOpened)}},{key:"toolbox",get:function(){var t=this;return{opened:this.toolboxInstance.opened,close:function(){t.toolboxInstance.close()},open:function(){t.Editor.BlockManager.currentBlock=t.hoveredBlock,t.toolboxInstance.open()},toggle:function(){return t.toolboxInstance.toggle()},hasFocus:function(){return t.toolboxInstance.hasFocus()}}}},{key:"blockActions",get:function(){var t=this;return{hide:function(){t.nodes.actions.classList.remove(t.CSS.actionsOpened)},show:function(){t.nodes.actions.classList.add(t.CSS.actionsOpened)}}}},{key:"blockTunesToggler",get:function(){var t=this;return{hide:function(){return t.nodes.settingsToggler.classList.add(t.CSS.settingsTogglerHidden)},show:function(){return t.nodes.settingsToggler.classList.remove(t.CSS.settingsTogglerHidden)}}}}]),o}(c.default);o.default=m,m.displayName="Toolbar",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(30),n(150),n(7)],void 0===(i="function"==typeof(o=function(t,e,o,r){"use strict";var i=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.I18nInternalNS=void 0,e=i(e);var a=function t(n,o){var i={};return Object.entries(n).forEach((function(n){var a=(0,e.default)(n,2),s=a[0],l=a[1];if((0,r.isObject)(l)){var c=o?"".concat(o,".").concat(s):s,u=Object.values(l).every((function(t){return(0,r.isString)(t)}));i[s]=u?c:t(l,c)}else i[s]=l})),i}((o=i(o)).default);t.I18nInternalNS=a})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o=n(13),r=n(10).document,i=o(r)&&o(r.createElement);t.exports=function(t){return i?r.createElement(t):{}}},function(t,e,n){e.f=n(15)},function(t,e,n){var o=n(69)("keys"),r=n(44);t.exports=function(t){return o[t]||(o[t]=r(t))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var o=n(10).document;t.exports=o&&o.documentElement},function(t,e,n){var o=n(13),r=n(12),i=function(t,e){if(r(t),!o(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{(o=n(31)(Function.call,n(34).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:o(t,n),t}}({},!1):void 0),check:i}},function(t,e){t.exports="\t\n\v\f\r  ᠎              \u2028\u2029\ufeff"},function(t,e,n){var o=n(13),r=n(90).set;t.exports=function(t,e,n){var i,a=e.constructor;return a!==n&&"function"==typeof a&&(i=a.prototype)!==n.prototype&&o(i)&&r&&r(t,i),t}},function(t,e,n){"use strict";var o=n(33),r=n(38);t.exports=function(t){var e=String(r(this)),n="",i=o(t);if(i<0||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e){var n=Math.expm1;t.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:n},function(t,e,n){var o=n(33),r=n(38);t.exports=function(t){return function(e,n){var i,a,s=String(r(e)),l=o(n),c=s.length;return l<0||l>=c?t?"":void 0:(i=s.charCodeAt(l))<55296||i>56319||l+1===c||(a=s.charCodeAt(l+1))<56320||a>57343?t?s.charAt(l):i:t?s.slice(l,l+2):a-56320+(i-55296<<10)+65536}}},function(t,e,n){"use strict";var o=n(45),r=n(0),i=n(23),a=n(27),s=n(55),l=n(130),c=n(53),u=n(50),f=n(15)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,e,n,h,v,g,y){l(n,e,h);var b,m,k,x=function(t){if(!d&&t in E)return E[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+" Iterator",S="values"==v,T=!1,E=t.prototype,B=E[f]||E["@@iterator"]||v&&E[v],C=B||x(v),_=v?S?x("entries"):C:void 0,I="Array"==e&&E.entries||B;if(I&&(k=u(I.call(new t)))!==Object.prototype&&k.next&&(c(k,w,!0),o||"function"==typeof k[f]||a(k,f,p)),S&&B&&"values"!==B.name&&(T=!0,C=function(){return B.call(this)}),o&&!y||!d&&!T&&E[f]||a(E,f,C),s[e]=C,s[w]=p,v)if(b={values:S?C:x("values"),keys:g?C:x("keys"),entries:_},y)for(m in b)m in E||i(E,m,b[m]);else r(r.P+r.F*(d||T),e,b);return b}},function(t,e,n){var o=n(99),r=n(38);t.exports=function(t,e,n){if(o(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(r(t))}},function(t,e,n){var o=n(13),r=n(37),i=n(15)("match");t.exports=function(t){var e;return o(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},function(t,e,n){var o=n(15)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[o]=!1,!"/./"[t](e)}catch(t){}}return!0}},function(t,e,n){var o=n(55),r=n(15)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||i[r]===t)}},function(t,e,n){"use strict";var o=n(19),r=n(43);t.exports=function(t,e,n){e in t?o.f(t,e,r(0,n)):t[e]=n}},function(t,e,n){var o=n(65),r=n(15)("iterator"),i=n(55);t.exports=n(17).getIteratorMethod=function(t){if(null!=t)return t[r]||t["@@iterator"]||i[o(t)]}},function(t,e,n){"use strict";var o=n(22),r=n(47),i=n(16);t.exports=function(t){for(var e=o(this),n=i(e.length),a=arguments.length,s=r(a>1?arguments[1]:void 0,n),l=a>2?arguments[2]:void 0,c=void 0===l?n:r(l,n);c>s;)e[s++]=t;return e}},function(t,e,n){"use strict";var o=n(51),r=n(135),i=n(55),a=n(28);t.exports=n(97)(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):r(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(t,e,n){"use strict";var o,r,i=n(74),a=RegExp.prototype.exec,s=String.prototype.replace,l=a,c=(o=/a/,r=/b*/g,a.call(o,"a"),a.call(r,"a"),0!==o.lastIndex||0!==r.lastIndex),u=void 0!==/()??/.exec("")[1];(c||u)&&(l=function(t){var e,n,o,r,l=this;return u&&(n=new RegExp("^"+l.source+"$(?!\\s)",i.call(l))),c&&(e=l.lastIndex),o=a.call(l,t),c&&o&&(l.lastIndex=l.global?o.index+o[0].length:e),u&&o&&o.length>1&&s.call(o[0],n,(function(){for(r=1;rn;)e.push(arguments[n++]);return y[++g]=function(){s("function"==typeof t?t:Function(t),e)},o(g),g},p=function(t){delete y[t]},"process"==n(37)(f)?o=function(t){f.nextTick(a(b,t,1))}:v&&v.now?o=function(t){v.now(a(b,t,1))}:h?(i=(r=new h).port2,r.port1.onmessage=m,o=a(i.postMessage,i,1)):u.addEventListener&&"function"==typeof postMessage&&!u.importScripts?(o=function(t){u.postMessage(t+"","*")},u.addEventListener("message",m,!1)):o="onreadystatechange"in c("script")?function(t){l.appendChild(c("script")).onreadystatechange=function(){l.removeChild(this),b.call(t)}}:function(t){setTimeout(a(b,t,1),0)}),t.exports={set:d,clear:p}},function(t,e,n){"use strict";var o=n(10),r=n(18),i=n(45),a=n(80),s=n(27),l=n(58),c=n(11),u=n(57),f=n(33),d=n(16),p=n(143),h=n(49).f,v=n(19).f,g=n(104),y=n(53),b=o.ArrayBuffer,m=o.DataView,k=o.Math,x=o.RangeError,w=o.Infinity,S=b,T=k.abs,E=k.pow,B=k.floor,C=k.log,_=k.LN2,I=r?"_b":"buffer",O=r?"_l":"byteLength",M=r?"_o":"byteOffset";function R(t,e,n){var o,r,i,a=new Array(n),s=8*n-e-1,l=(1<>1,u=23===e?E(2,-24)-E(2,-77):0,f=0,d=t<0||0===t&&1/t<0?1:0;for((t=T(t))!=t||t===w?(r=t!=t?1:0,o=l):(o=B(C(t)/_),t*(i=E(2,-o))<1&&(o--,i*=2),(t+=o+c>=1?u/i:u*E(2,1-c))*i>=2&&(o++,i/=2),o+c>=l?(r=0,o=l):o+c>=1?(r=(t*i-1)*E(2,e),o+=c):(r=t*E(2,c-1)*E(2,e),o=0));e>=8;a[f++]=255&r,r/=256,e-=8);for(o=o<0;a[f++]=255&o,o/=256,s-=8);return a[--f]|=128*d,a}function A(t,e,n){var o,r=8*n-e-1,i=(1<>1,s=r-7,l=n-1,c=t[l--],u=127&c;for(c>>=7;s>0;u=256*u+t[l],l--,s-=8);for(o=u&(1<<-s)-1,u>>=-s,s+=e;s>0;o=256*o+t[l],l--,s-=8);if(0===u)u=1-a;else{if(u===i)return o?NaN:c?-w:w;o+=E(2,e),u-=a}return(c?-1:1)*o*E(2,u-e)}function N(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function L(t){return[255&t]}function P(t){return[255&t,t>>8&255]}function D(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function j(t){return R(t,52,8)}function F(t){return R(t,23,4)}function H(t,e,n){v(t.prototype,e,{get:function(){return this[n]}})}function U(t,e,n,o){var r=p(+n);if(r+e>t[O])throw x("Wrong index!");var i=t[I]._b,a=r+t[M],s=i.slice(a,a+e);return o?s:s.reverse()}function z(t,e,n,o,r,i){var a=p(+n);if(a+e>t[O])throw x("Wrong index!");for(var s=t[I]._b,l=a+t[M],c=o(+r),u=0;uX;)(W=V[X++])in b||s(b,W,S[W]);i||(Y.constructor=b)}var K=new m(new b(2)),G=m.prototype.setInt8;K.setInt8(0,2147483648),K.setInt8(1,2147483649),!K.getInt8(0)&&K.getInt8(1)||l(m.prototype,{setInt8:function(t,e){G.call(this,t,e<<24>>24)},setUint8:function(t,e){G.call(this,t,e<<24>>24)}},!0)}else b=function(t){u(this,b,"ArrayBuffer");var e=p(t);this._b=g.call(new Array(e),0),this[O]=e},m=function(t,e,n){u(this,m,"DataView"),u(t,b,"DataView");var o=t[O],r=f(e);if(r<0||r>o)throw x("Wrong offset!");if(r+(n=void 0===n?o-r:d(n))>o)throw x("Wrong length!");this[I]=t,this[M]=r,this[O]=n},r&&(H(b,"byteLength","_l"),H(m,"buffer","_b"),H(m,"byteLength","_l"),H(m,"byteOffset","_o")),l(m.prototype,{getInt8:function(t){return U(this,1,t)[0]<<24>>24},getUint8:function(t){return U(this,1,t)[0]},getInt16:function(t){var e=U(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=U(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return N(U(this,4,t,arguments[1]))},getUint32:function(t){return N(U(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return A(U(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return A(U(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){z(this,1,t,L,e)},setUint8:function(t,e){z(this,1,t,L,e)},setInt16:function(t,e){z(this,2,t,P,e,arguments[2])},setUint16:function(t,e){z(this,2,t,P,e,arguments[2])},setInt32:function(t,e){z(this,4,t,D,e,arguments[2])},setUint32:function(t,e){z(this,4,t,D,e,arguments[2])},setFloat32:function(t,e){z(this,4,t,F,e,arguments[2])},setFloat64:function(t,e){z(this,8,t,j,e,arguments[2])}});y(b,"ArrayBuffer"),y(m,"DataView"),s(m.prototype,a.VIEW,!0),e.ArrayBuffer=b,e.DataView=m},function(t,e){function n(e,o){return t.exports=n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},n(e,o)}t.exports=n},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a){"use strict";var s=n(8),l=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=l(r),i=l(i),a=s(a);var c=function(){function t(){(0,r.default)(this,t),this.allListeners=[]}return(0,i.default)(t,[{key:"on",value:function(t,e,n){var o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=a.generateId("l"),i={id:r,element:t,eventType:e,handler:n,options:o},s=this.findOne(t,e,n);if(!s)return this.allListeners.push(i),t.addEventListener(e,n,o),r}},{key:"off",value:function(t,e,n,o){var r=this,i=this.findAll(t,e,n);i.forEach((function(t,e){var n=r.allListeners.indexOf(i[e]);n>-1&&(r.allListeners.splice(n,1),t.element.removeEventListener(t.eventType,t.handler,t.options))}))}},{key:"offById",value:function(t){var e=this.findById(t);e&&e.element.removeEventListener(e.eventType,e.handler,e.options)}},{key:"findOne",value:function(t,e,n){var o=this.findAll(t,e,n);return o.length>0?o[0]:null}},{key:"findAll",value:function(t,e,n){var o=t?this.findByEventTarget(t):[];return t&&e&&n?o.filter((function(t){return t.eventType===e&&t.handler===n})):t&&e?o.filter((function(t){return t.eventType===e})):o}},{key:"removeAll",value:function(){this.allListeners.map((function(t){t.element.removeEventListener(t.eventType,t.handler,t.options)})),this.allListeners=[]}},{key:"destroy",value:function(){this.removeAll()}},{key:"findByEventTarget",value:function(t){return this.allListeners.filter((function(e){if(e.element===t)return e}))}},{key:"findByType",value:function(t){return this.allListeners.filter((function(e){if(e.eventType===t)return e}))}},{key:"findByHandler",value:function(t){return this.allListeners.filter((function(e){if(e.handler===t)return e}))}},{key:"findById",value:function(t){return this.allListeners.find((function(e){return e.id===t}))}}]),t}();o.default=c,c.displayName="Listeners",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e],void 0===(i="function"==typeof(o=function(n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var o=function(t){var e={get id(){return t.id},get name(){return t.name},get config(){return t.config},get holder(){return t.holder},get isEmpty(){return t.isEmpty},get selected(){return t.selected},set stretched(e){t.stretched=e},get stretched(){return t.stretched},call:function(e,n){return t.call(e,n)},save:function(){return t.save()},validate:function(e){return t.validate(e)},dispatchChange:function(){t.dispatchChange()}};Object.setPrototypeOf(this,e)};n.default=o,t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o=n(376);function r(e,n,i){return"undefined"!=typeof Reflect&&Reflect.get?t.exports=r=Reflect.get:t.exports=r=function(t,e,n){var r=o(t,e);if(r){var i=Object.getOwnPropertyDescriptor(r,e);return i.get?i.get.call(n):i.value}},r(e,n,i||e)}t.exports=r},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(380)],void 0===(i="function"==typeof(o=function(o,r,i,a){"use strict";var s=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=s(r),i=s(i),a=s(a);var l=function(){function t(){(0,r.default)(this,t),this.lib=new a.default}return(0,i.default)(t,[{key:"destroy",value:function(){this.lib.destroy()}},{key:"show",value:function(t,e,n){this.lib.show(t,e,n)}},{key:"hide",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.lib.hide(t)}},{key:"onHover",value:function(t,e,n){this.lib.onHover(t,e,n)}}]),t}();o.default=l,l.displayName="Tooltip",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(42),n(2),n(3),n(384)],void 0===(i="function"==typeof(o=function(o,r,i,a,s){"use strict";var l=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=l(r),i=l(i),a=l(a),s=l(s);var c=function(){function t(){(0,i.default)(this,t),this.registeredShortcuts=new Map}return(0,a.default)(t,[{key:"add",value:function(t){if(this.findShortcut(t.on,t.name))throw Error("Shortcut ".concat(t.name," is already registered for ").concat(t.on,". Please remove it before add a new handler."));var e=new s.default({name:t.name,on:t.on,callback:t.handler}),n=this.registeredShortcuts.get(t.on)||[];this.registeredShortcuts.set(t.on,[].concat((0,r.default)(n),[e]))}},{key:"remove",value:function(t,e){var n=this.findShortcut(t,e);if(n){n.remove();var o=this.registeredShortcuts.get(t);this.registeredShortcuts.set(t,o.filter((function(t){return t!==n})))}}},{key:"findShortcut",value:function(t,e){return(this.registeredShortcuts.get(t)||[]).find((function(t){return t.name===e}))}}]),t}();c.displayName="Shortcuts";var u=new c;o.default=u,t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){t.exports=!n(18)&&!n(11)((function(){return 7!=Object.defineProperty(n(85)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var o=n(10),r=n(17),i=n(45),a=n(86),s=n(19).f;t.exports=function(t){var e=r.Symbol||(r.Symbol=i?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},function(t,e,n){var o=n(26),r=n(28),i=n(70)(!1),a=n(87)("IE_PROTO");t.exports=function(t,e){var n,s=r(t),l=0,c=[];for(n in s)n!=a&&o(s,n)&&c.push(n);for(;e.length>l;)o(s,n=e[l++])&&(~i(c,n)||c.push(n));return c}},function(t,e,n){var o=n(19),r=n(12),i=n(46);t.exports=n(18)?Object.defineProperties:function(t,e){r(t);for(var n,a=i(e),s=a.length,l=0;s>l;)o.f(t,n=a[l++],e[n]);return t}},function(t,e,n){var o=n(28),r=n(49).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return r(t)}catch(t){return a.slice()}}(t):r(o(t))}},function(t,e,n){"use strict";var o=n(18),r=n(46),i=n(71),a=n(64),s=n(22),l=n(63),c=Object.assign;t.exports=!c||n(11)((function(){var t={},e={},n=Symbol(),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=o}))?function(t,e){for(var n=s(t),c=arguments.length,u=1,f=i.f,d=a.f;c>u;)for(var p,h=l(arguments[u++]),v=f?r(h).concat(f(h)):r(h),g=v.length,y=0;g>y;)p=v[y++],o&&!d.call(h,p)||(n[p]=h[p]);return n}:c},function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},function(t,e,n){"use strict";var o=n(32),r=n(13),i=n(124),a=[].slice,s={},l=function(t,e,n){if(!(e in s)){for(var o=[],r=0;r>>0||(a.test(n)?16:10))}:o},function(t,e,n){var o=n(10).parseFloat,r=n(54).trim;t.exports=1/o(n(91)+"-0")!=-1/0?function(t){var e=r(String(t),3),n=o(e);return 0===n&&"-"==e.charAt(0)?-0:n}:o},function(t,e,n){var o=n(37);t.exports=function(t,e){if("number"!=typeof t&&"Number"!=o(t))throw TypeError(e);return+t}},function(t,e,n){var o=n(13),r=Math.floor;t.exports=function(t){return!o(t)&&isFinite(t)&&r(t)===t}},function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,e,n){"use strict";var o=n(48),r=n(43),i=n(53),a={};n(27)(a,n(15)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=o(a,{next:r(1,n)}),i(t,e+" Iterator")}},function(t,e,n){var o=n(12);t.exports=function(t,e,n,r){try{return r?e(o(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&o(i.call(t)),e}}},function(t,e,n){var o=n(282);t.exports=function(t,e){return new(o(t))(e)}},function(t,e,n){var o=n(32),r=n(22),i=n(63),a=n(16);t.exports=function(t,e,n,s,l){o(e);var c=r(t),u=i(c),f=a(c.length),d=l?f-1:0,p=l?-1:1;if(n<2)for(;;){if(d in u){s=u[d],d+=p;break}if(d+=p,l?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;l?d>=0:f>d;d+=p)d in u&&(s=e(s,u[d],d,c));return s}},function(t,e,n){"use strict";var o=n(22),r=n(47),i=n(16);t.exports=[].copyWithin||function(t,e){var n=o(this),a=i(n.length),s=r(t,a),l=r(e,a),c=arguments.length>2?arguments[2]:void 0,u=Math.min((void 0===c?a:r(c,a))-l,a-s),f=1;for(l0;)l in n?n[s]=n[l]:delete n[s],s+=f,l+=f;return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){"use strict";var o=n(106);n(0)({target:"RegExp",proto:!0,forced:o!==/./.exec},{exec:o})},function(t,e,n){n(18)&&"g"!=/./g.flags&&n(19).f(RegExp.prototype,"flags",{configurable:!0,get:n(74)})},function(t,e,n){"use strict";var o,r,i,a,s=n(45),l=n(10),c=n(31),u=n(65),f=n(0),d=n(13),p=n(32),h=n(57),v=n(77),g=n(66),y=n(108).set,b=n(302)(),m=n(139),k=n(303),x=n(78),w=n(140),S=l.TypeError,T=l.process,E=T&&T.versions,B=E&&E.v8||"",C=l.Promise,_="process"==u(T),I=function(){},O=r=m.f,M=!!function(){try{var t=C.resolve(1),e=(t.constructor={})[n(15)("species")]=function(t){t(I,I)};return(_||"function"==typeof PromiseRejectionEvent)&&t.then(I)instanceof e&&0!==B.indexOf("6.6")&&-1===x.indexOf("Chrome/66")}catch(t){}}(),R=function(t){var e;return!(!d(t)||"function"!=typeof(e=t.then))&&e},A=function(t,e){if(!t._n){t._n=!0;var n=t._c;b((function(){for(var o=t._v,r=1==t._s,i=0,a=function(e){var n,i,a,s=r?e.ok:e.fail,l=e.resolve,c=e.reject,u=e.domain;try{s?(r||(2==t._h&&P(t),t._h=1),!0===s?n=o:(u&&u.enter(),n=s(o),u&&(u.exit(),a=!0)),n===e.promise?c(S("Promise-chain cycle")):(i=R(n))?i.call(n,l,c):l(n)):c(o)}catch(t){u&&!a&&u.exit(),c(t)}};n.length>i;)a(n[i++]);t._c=[],t._n=!1,e&&!t._h&&N(t)}))}},N=function(t){y.call(l,(function(){var e,n,o,r=t._v,i=L(t);if(i&&(e=k((function(){_?T.emit("unhandledRejection",r,t):(n=l.onunhandledrejection)?n({promise:t,reason:r}):(o=l.console)&&o.error&&o.error("Unhandled promise rejection",r)})),t._h=_||L(t)?2:1),t._a=void 0,i&&e.e)throw e.v}))},L=function(t){return 1!==t._h&&0===(t._a||t._c).length},P=function(t){y.call(l,(function(){var e;_?T.emit("rejectionHandled",t):(e=l.onrejectionhandled)&&e({promise:t,reason:t._v})}))},D=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),A(e,!0))},j=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw S("Promise can't be resolved itself");(e=R(t))?b((function(){var o={_w:n,_d:!1};try{e.call(t,c(j,o,1),c(D,o,1))}catch(t){D.call(o,t)}})):(n._v=t,n._s=1,A(n,!1))}catch(t){D.call({_w:n,_d:!1},t)}}};M||(C=function(t){h(this,C,"Promise","_h"),p(t),o.call(this);try{t(c(j,this,1),c(D,this,1))}catch(t){D.call(this,t)}},(o=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(58)(C.prototype,{then:function(t,e){var n=O(g(this,C));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=_?T.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&A(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new o;this.promise=t,this.resolve=c(j,t,1),this.reject=c(D,t,1)},m.f=O=function(t){return t===C||t===a?new i(t):r(t)}),f(f.G+f.W+f.F*!M,{Promise:C}),n(53)(C,"Promise"),n(56)("Promise"),a=n(17).Promise,f(f.S+f.F*!M,"Promise",{reject:function(t){var e=O(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(s||!M),"Promise",{resolve:function(t){return w(s&&this===a?C:this,t)}}),f(f.S+f.F*!(M&&n(73)((function(t){C.all(t).catch(I)}))),"Promise",{all:function(t){var e=this,n=O(e),o=n.resolve,r=n.reject,i=k((function(){var n=[],i=0,a=1;v(t,!1,(function(t){var s=i++,l=!1;n.push(void 0),a++,e.resolve(t).then((function(t){l||(l=!0,n[s]=t,--a||o(n))}),r)})),--a||o(n)}));return i.e&&r(i.v),n.promise},race:function(t){var e=this,n=O(e),o=n.reject,r=k((function(){v(t,!1,(function(t){e.resolve(t).then(n.resolve,o)}))}));return r.e&&o(r.v),n.promise}})},function(t,e,n){"use strict";var o=n(32);function r(t){var e,n;this.promise=new t((function(t,o){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=o})),this.resolve=o(e),this.reject=o(n)}t.exports.f=function(t){return new r(t)}},function(t,e,n){var o=n(12),r=n(13),i=n(139);t.exports=function(t,e){if(o(t),r(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){"use strict";var o=n(19).f,r=n(48),i=n(58),a=n(31),s=n(57),l=n(77),c=n(97),u=n(135),f=n(56),d=n(18),p=n(41).fastKey,h=n(52),v=d?"_s":"size",g=function(t,e){var n,o=p(e);if("F"!==o)return t._i[o];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,c){var u=t((function(t,o){s(t,u,e,"_i"),t._t=e,t._i=r(null),t._f=void 0,t._l=void 0,t[v]=0,null!=o&&l(o,n,t[c],t)}));return i(u.prototype,{clear:function(){for(var t=h(this,e),n=t._i,o=t._f;o;o=o.n)o.r=!0,o.p&&(o.p=o.p.n=void 0),delete n[o.i];t._f=t._l=void 0,t[v]=0},delete:function(t){var n=h(this,e),o=g(n,t);if(o){var r=o.n,i=o.p;delete n._i[o.i],o.r=!0,i&&(i.n=r),r&&(r.p=i),n._f==o&&(n._f=r),n._l==o&&(n._l=i),n[v]--}return!!o},forEach:function(t){h(this,e);for(var n,o=a(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(o(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(h(this,e),t)}}),d&&o(u.prototype,"size",{get:function(){return h(this,e)[v]}}),u},def:function(t,e,n){var o,r,i=g(t,e);return i?i.v=n:(t._l=i={i:r=p(e,!0),k:e,v:n,p:o=t._l,n:void 0,r:!1},t._f||(t._f=i),o&&(o.n=i),t[v]++,"F"!==r&&(t._i[r]=i)),t},getEntry:g,setStrong:function(t,e,n){c(t,e,(function(t,n){this._t=h(t,e),this._k=n,this._l=void 0}),(function(){for(var t=this._k,e=this._l;e&&e.r;)e=e.p;return this._t&&(this._l=e=e?e.n:this._t._f)?u(0,"keys"==t?e.k:"values"==t?e.v:[e.k,e.v]):(this._t=void 0,u(1))}),n?"entries":"values",!n,!0),f(e)}}},function(t,e,n){"use strict";var o=n(58),r=n(41).getWeak,i=n(12),a=n(13),s=n(57),l=n(77),c=n(36),u=n(26),f=n(52),d=c(5),p=c(6),h=0,v=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},y=function(t,e){return d(t.a,(function(t){return t[0]===e}))};g.prototype={get:function(t){var e=y(this,t);if(e)return e[1]},has:function(t){return!!y(this,t)},set:function(t,e){var n=y(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=p(this.a,(function(e){return e[0]===t}));return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,i){var c=t((function(t,o){s(t,c,e,"_i"),t._t=e,t._i=h++,t._l=void 0,null!=o&&l(o,n,t[i],t)}));return o(c.prototype,{delete:function(t){if(!a(t))return!1;var n=r(t);return!0===n?v(f(this,e)).delete(t):n&&u(n,this._i)&&delete n[this._i]},has:function(t){if(!a(t))return!1;var n=r(t);return!0===n?v(f(this,e)).has(t):n&&u(n,this._i)}}),c},def:function(t,e,n){var o=r(i(e),!0);return!0===o?v(t).set(e,n):o[t._i]=n,t},ufstore:v}},function(t,e,n){var o=n(33),r=n(16);t.exports=function(t){if(void 0===t)return 0;var e=o(t),n=r(e);if(e!==n)throw RangeError("Wrong length!");return n}},function(t,e,n){var o=n(49),r=n(71),i=n(12),a=n(10).Reflect;t.exports=a&&a.ownKeys||function(t){var e=o.f(i(t)),n=r.f;return n?e.concat(n(t)):e}},function(t,e,n){var o=n(16),r=n(93),i=n(38);t.exports=function(t,e,n,a){var s=String(i(t)),l=s.length,c=void 0===n?" ":String(n),u=o(e);if(u<=l||""==c)return s;var f=u-l,d=r.call(c,Math.ceil(f/c.length));return d.length>f&&(d=d.slice(0,f)),a?d+s:s+d}},function(t,e,n){var o=n(18),r=n(46),i=n(28),a=n(64).f;t.exports=function(t){return function(e){for(var n,s=i(e),l=r(s),c=l.length,u=0,f=[];c>u;)n=l[u++],o&&!a.call(s,n)||f.push(t?[n,s[n]]:s[n]);return f}}},function(t,e,n){var o=function(t){"use strict";var e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},r=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",a=o.toStringTag||"@@toStringTag";function s(t,e,n,o){var r=e&&e.prototype instanceof u?e:u,i=Object.create(r.prototype),a=new w(o||[]);return i._invoke=function(t,e,n){var o="suspendedStart";return function(r,i){if("executing"===o)throw new Error("Generator is already running");if("completed"===o){if("throw"===r)throw i;return T()}for(n.method=r,n.arg=i;;){var a=n.delegate;if(a){var s=m(a,n);if(s){if(s===c)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===o)throw o="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o="executing";var u=l(t,e,n);if("normal"===u.type){if(o=n.done?"completed":"suspendedYield",u.arg===c)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o="completed",n.method="throw",n.arg=u.arg)}}}(t,n,a),i}function l(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var c={};function u(){}function f(){}function d(){}var p={};p[r]=function(){return this};var h=Object.getPrototypeOf,v=h&&h(h(S([])));v&&v!==e&&n.call(v,r)&&(p=v);var g=d.prototype=u.prototype=Object.create(p);function y(t){["next","throw","return"].forEach((function(e){t[e]=function(t){return this._invoke(e,t)}}))}function b(t,e){var o;this._invoke=function(r,i){function a(){return new e((function(o,a){!function o(r,i,a,s){var c=l(t[r],t,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==typeof f&&n.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,s)}),(function(t){o("throw",t,a,s)})):e.resolve(f).then((function(t){u.value=t,a(u)}),(function(t){return o("throw",t,a,s)}))}s(c.arg)}(r,i,o,a)}))}return o=o?o.then(a,a):a()}}function m(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,m(t,e),"throw"===e.method))return c;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,c;var r=o.arg;return r?r.done?(e[t.resultName]=r.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,c):r:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,c)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function x(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function w(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function S(t){if(t){var e=t[r];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function e(){for(;++o=0;--r){var i=this.tryEntries[r],a=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(s&&l){if(this.prev=0;--o){var r=this.tryEntries[o];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),x(n),c}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var o=n.completion;if("throw"===o.type){var r=o.arg;x(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:S(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),c}},t}(t.exports);try{regeneratorRuntime=o}catch(t){Function("r","regeneratorRuntime = r")(o)}},function(t,e,n){var o=n(149);t.exports=function(t,e){if(t){if("string"==typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}},function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:t.config.defaultBlock,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=(arguments.length>2&&void 0!==arguments[2]&&arguments[2],arguments.length>3?arguments[3]:void 0),r=arguments.length>4?arguments[4]:void 0,i=arguments.length>5?arguments[5]:void 0,a=t.Editor.BlockManager.insert({tool:e,data:n,index:o,needToFocus:r,replace:i});return new d.default(a)},t.composeBlockData=function(){var e=(0,i.default)(r.default.mark((function e(n){var o,i;return r.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.Editor.Tools.blockTools.get(n),i=new h.default({tool:o,api:t.Editor.API,readOnly:!0,data:{},tunesData:{}}),e.abrupt("return",i.data);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),t.update=function(e,n){var o=t.Editor.BlockManager,r=o.getBlockById(e);if(r){var i=o.getBlockIndex(r);o.insert({id:r.id,tool:r.name,data:n,index:i,replace:!0,tunes:r.tunes})}else f.log("blocks.update(): Block with passed id was not found","warn")},t}return(0,s.default)(o,[{key:"getBlocksCount",value:function(){return this.Editor.BlockManager.blocks.length}},{key:"getCurrentBlockIndex",value:function(){return this.Editor.BlockManager.currentBlockIndex}},{key:"getBlockIndex",value:function(t){var e=this.Editor.BlockManager.getBlockById(t);if(e)return this.Editor.BlockManager.getBlockIndex(e);f.logLabeled("There is no block with id `"+t+"`","warn")}},{key:"getBlockByIndex",value:function(t){var e=this.Editor.BlockManager.getBlockByIndex(t);if(void 0!==e)return new d.default(e);f.logLabeled("There is no block at index `"+t+"`","warn")}},{key:"getById",value:function(t){var e=this.Editor.BlockManager.getBlockById(t);return void 0===e?(f.logLabeled("There is no block with id `"+t+"`","warn"),null):new d.default(e)}},{key:"swap",value:function(t,e){f.log("`blocks.swap()` method is deprecated and will be removed in the next major release. Use `block.move()` method instead","info"),this.Editor.BlockManager.swap(t,e)}},{key:"move",value:function(t,e){this.Editor.BlockManager.move(t,e)}},{key:"delete",value:function(t){try{this.Editor.BlockManager.removeBlock(t)}catch(t){return void f.logLabeled(t,"warn")}0===this.Editor.BlockManager.blocks.length&&this.Editor.BlockManager.insert(),this.Editor.BlockManager.currentBlock&&this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock,this.Editor.Caret.positions.END),this.Editor.Toolbar.close()}},{key:"clear",value:function(){this.Editor.BlockManager.clear(!0),this.Editor.InlineToolbar.close()}},{key:"render",value:function(t){return this.Editor.BlockManager.clear(),this.Editor.Renderer.render(t.blocks)}},{key:"renderFromHTML",value:function(t){return this.Editor.BlockManager.clear(),this.Editor.Paste.processText(t,!0)}},{key:"stretchBlock",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];f.deprecationAssert(!0,"blocks.stretchBlock()","BlockAPI");var n=this.Editor.BlockManager.getBlockByIndex(t);n&&(n.stretched=e)}},{key:"insertNewBlock",value:function(){f.log("Method blocks.insertNewBlock() is deprecated and it will be removed in the next major release. Use blocks.insert() instead.","warn"),this.insert()}},{key:"methods",get:function(){var t=this;return{clear:function(){return t.clear()},render:function(e){return t.render(e)},renderFromHTML:function(e){return t.renderFromHTML(e)},delete:function(e){return t.delete(e)},swap:function(e,n){return t.swap(e,n)},move:function(e,n){return t.move(e,n)},getBlockByIndex:function(e){return t.getBlockByIndex(e)},getById:function(e){return t.getById(e)},getCurrentBlockIndex:function(){return t.getCurrentBlockIndex()},getBlockIndex:function(e){return t.getBlockIndex(e)},getBlocksCount:function(){return t.getBlocksCount()},stretchBlock:function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t.stretchBlock(e,n)},insertNewBlock:function(){return t.insertNewBlock()},insert:this.insert,update:this.update,composeBlockData:this.composeBlockData}}}]),o}(p.default);o.default=b,b.displayName="BlocksAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c){"use strict";var u=n(1);function f(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),a=u(a),s=u(s),l=u(l);var d=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(f()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){var t;return(0,r.default)(this,o),(t=n.apply(this,arguments)).setToFirstBlock=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:t.Editor.Caret.positions.DEFAULT,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return!!t.Editor.BlockManager.firstBlock&&(t.Editor.Caret.setToBlock(t.Editor.BlockManager.firstBlock,e,n),!0)},t.setToLastBlock=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:t.Editor.Caret.positions.DEFAULT,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return!!t.Editor.BlockManager.lastBlock&&(t.Editor.Caret.setToBlock(t.Editor.BlockManager.lastBlock,e,n),!0)},t.setToPreviousBlock=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:t.Editor.Caret.positions.DEFAULT,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return!!t.Editor.BlockManager.previousBlock&&(t.Editor.Caret.setToBlock(t.Editor.BlockManager.previousBlock,e,n),!0)},t.setToNextBlock=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:t.Editor.Caret.positions.DEFAULT,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return!!t.Editor.BlockManager.nextBlock&&(t.Editor.Caret.setToBlock(t.Editor.BlockManager.nextBlock,e,n),!0)},t.setToBlock=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.Editor.Caret.positions.DEFAULT,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return!!t.Editor.BlockManager.blocks[e]&&(t.Editor.Caret.setToBlock(t.Editor.BlockManager.blocks[e],n,o),!0)},t.focus=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e?t.setToLastBlock(t.Editor.Caret.positions.END):t.setToFirstBlock(t.Editor.Caret.positions.START)},t}return(0,i.default)(o,[{key:"methods",get:function(){return{setToFirstBlock:this.setToFirstBlock,setToLastBlock:this.setToLastBlock,setToPreviousBlock:this.setToPreviousBlock,setToNextBlock:this.setToNextBlock,setToBlock:this.setToBlock,focus:this.focus}}}]),o}((c=u(c)).default);o.default=d,d.displayName="CaretAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c){"use strict";var u=n(1);function f(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),a=u(a),s=u(s),l=u(l);var d=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(f()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"on",value:function(t,e){this.eventsDispatcher.on(t,e)}},{key:"emit",value:function(t,e){this.eventsDispatcher.emit(t,e)}},{key:"off",value:function(t,e){this.eventsDispatcher.off(t,e)}},{key:"methods",get:function(){var t=this;return{emit:function(e,n){return t.emit(e,n)},off:function(e,n){return t.off(e,n)},on:function(e,n){return t.on(e,n)}}}}]),o}((c=u(c)).default);o.default=d,d.displayName="EventsAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(60),n(7),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f){"use strict";var d=n(1);function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=d(r),i=d(i),a=d(a),s=d(s),l=d(l),c=d(c);var h=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(p()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"getMethodsForTool",value:function(t){return Object.assign(this.methods,{t:function(e){return c.default.t(o.getNamespace(t),e)}})}},{key:"methods",get:function(){return{t:function(){(0,u.logLabeled)("I18n.t() method can be accessed only from Tools","warn")}}}}],[{key:"getNamespace",value:function(t){return t.isTune()?"blockTunes.".concat(t.name):"tools.".concat(t.name)}}]),o}((f=d(f)).default);o.default=h,h.displayName="I18nAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c){"use strict";var u=n(1);function f(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),a=u(a),s=u(s),l=u(l);var d=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(f()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"open",value:function(){this.Editor.InlineToolbar.tryToShow()}},{key:"close",value:function(){this.Editor.InlineToolbar.close()}},{key:"methods",get:function(){var t=this;return{close:function(){return t.close()},open:function(){return t.open()}}}}]),o}((c=u(c)).default);o.default=d,d.displayName="InlineToolbarAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c){"use strict";var u=n(1);function f(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),a=u(a),s=u(s),l=u(l);var d=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(f()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"on",value:function(t,e,n,o){return this.listeners.on(t,e,n,o)}},{key:"off",value:function(t,e,n,o){this.listeners.off(t,e,n,o)}},{key:"offById",value:function(t){this.listeners.offById(t)}},{key:"methods",get:function(){var t=this;return{on:function(e,n,o,r){return t.on(e,n,o,r)},off:function(e,n,o,r){return t.off(e,n,o,r)},offById:function(e){return t.offById(e)}}}}]),o}((c=u(c)).default);o.default=d,d.displayName="ListenersAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(377),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u){"use strict";var f=n(1);function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=f(r),i=f(i),a=f(a),s=f(s),l=f(l),c=f(c);var p=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(d()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(t){var e,i=t.config,a=t.eventsDispatcher;return(0,r.default)(this,o),(e=n.call(this,{config:i,eventsDispatcher:a})).notifier=new c.default,e}return(0,i.default)(o,[{key:"show",value:function(t){return this.notifier.show(t)}},{key:"methods",get:function(){var t=this;return{show:function(e){return t.show(e)}}}}]),o}((u=f(u)).default);o.default=p,p.displayName="NotifierAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c){"use strict";var u=n(1);function f(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),a=u(a),s=u(s),l=u(l);var d=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(f()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"toggle",value:function(t){return this.Editor.ReadOnly.toggle(t)}},{key:"methods",get:function(){var t=this;return{toggle:function(e){return t.toggle(e)},get isEnabled(){return t.isEnabled}}}},{key:"isEnabled",get:function(){return this.Editor.ReadOnly.isEnabled}}]),o}((c=u(c)).default);o.default=d,d.displayName="ReadOnlyAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9),n(67)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u){"use strict";var f=n(1);function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=f(r),i=f(i),a=f(a),s=f(s),l=f(l);var p=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(d()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"clean",value:function(t,e){return(0,u.clean)(t,e)}},{key:"methods",get:function(){var t=this;return{clean:function(e,n){return t.clean(e,n)}}}}]),o}((c=f(c)).default);o.default=p,p.displayName="SanitizerAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(7),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u){"use strict";var f=n(8),d=n(1);function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=d(r),i=d(i),a=d(a),s=d(s),l=d(l),c=f(c);var h=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(p()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"save",value:function(){var t="Editor's content can not be saved in read-only mode";return this.Editor.ReadOnly.isEnabled?(c.logLabeled(t,"warn"),Promise.reject(new Error(t))):this.Editor.Saver.save()}},{key:"methods",get:function(){var t=this;return{save:function(){return t.save()}}}}]),o}((u=d(u)).default);o.default=h,h.displayName="SaverAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(25),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u){"use strict";var f=n(1);function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=f(r),i=f(i),a=f(a),s=f(s),l=f(l),c=f(c);var p=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(d()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"findParentTag",value:function(t,e){return(new c.default).findParentTag(t,e)}},{key:"expandToTag",value:function(t){(new c.default).expandToTag(t)}},{key:"methods",get:function(){var t=this;return{findParentTag:function(e,n){return t.findParentTag(e,n)},expandToTag:function(e){return t.expandToTag(e)}}}}]),o}((u=f(u)).default);o.default=p,p.displayName="SelectionAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c){"use strict";var u=n(1);function f(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),a=u(a),s=u(s),l=u(l);var d=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(f()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"classes",get:function(){return{block:"cdx-block",inlineToolButton:"ce-inline-tool",inlineToolButtonActive:"ce-inline-tool--active",input:"cdx-input",loader:"cdx-loader",button:"cdx-button",settingsButton:"cdx-settings-button",settingsButtonActive:"cdx-settings-button--active"}}}]),o}((c=u(c)).default);o.default=d,d.displayName="StylesAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u){"use strict";var f=n(8),d=n(1);function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=d(r),i=d(i),a=d(a),s=d(s),l=d(l),c=d(c),u=f(u);var h=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(p()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"open",value:function(){this.Editor.Toolbar.moveAndOpen()}},{key:"close",value:function(){this.Editor.Toolbar.close()}},{key:"toggleBlockSettings",value:function(t){-1!==this.Editor.BlockManager.currentBlockIndex?(null!=t?t:!this.Editor.BlockSettings.opened)?(this.Editor.Toolbar.moveAndOpen(),this.Editor.BlockSettings.open()):this.Editor.BlockSettings.close():u.logLabeled("Could't toggle the Toolbar because there is no block selected ","warn")}},{key:"methods",get:function(){var t=this;return{close:function(){return t.close()},open:function(){return t.open()},toggleBlockSettings:function(e){return t.toggleBlockSettings(e)}}}}]),o}(c.default);o.default=h,h.displayName="ToolbarAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9),n(114)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u){"use strict";var f=n(1);function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=f(r),i=f(i),a=f(a),s=f(s),l=f(l),c=f(c),u=f(u);var p=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(d()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(t){var e,i=t.config,a=t.eventsDispatcher;return(0,r.default)(this,o),(e=n.call(this,{config:i,eventsDispatcher:a})).tooltip=new u.default,e}return(0,i.default)(o,[{key:"destroy",value:function(){this.tooltip.destroy()}},{key:"show",value:function(t,e,n){this.tooltip.show(t,e,n)}},{key:"hide",value:function(){this.tooltip.hide()}},{key:"onHover",value:function(t,e,n){this.tooltip.onHover(t,e,n)}},{key:"methods",get:function(){var t=this;return{show:function(e,n,o){return t.show(e,n,o)},hide:function(){return t.hide()},onHover:function(e,n,o){return t.onHover(e,n,o)}}}}]),o}(c.default);o.default=p,p.displayName="TooltipAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c){"use strict";var u=n(1);function f(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),a=u(a),s=u(s),l=u(l);var d=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(f()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"methods",get:function(){return{nodes:this.editorNodes}}},{key:"editorNodes",get:function(){return{wrapper:this.Editor.UI.nodes.wrapper,redactor:this.Editor.UI.nodes.redactor}}}]),o}((c=u(c)).default);o.default=d,d.displayName="UiAPI",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9),n(7),n(25),n(62)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d){"use strict";var p=n(8),h=n(1);function v(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=h(r),i=h(i),a=h(a),s=h(s),l=h(l),c=h(c),u=p(u),f=h(f),d=h(d);var g=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(v()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"keydown",value:function(t){switch(this.beforeKeydownProcessing(t),t.keyCode){case u.keyCodes.BACKSPACE:this.backspace(t);break;case u.keyCodes.ENTER:this.enter(t);break;case u.keyCodes.DOWN:case u.keyCodes.RIGHT:this.arrowRightAndDown(t);break;case u.keyCodes.UP:case u.keyCodes.LEFT:this.arrowLeftAndUp(t);break;case u.keyCodes.TAB:this.tabPressed(t)}}},{key:"beforeKeydownProcessing",value:function(t){this.needToolbarClosing(t)&&u.isPrintableKey(t.keyCode)&&(this.Editor.Toolbar.close(),this.Editor.ConversionToolbar.close(),t.ctrlKey||t.metaKey||t.altKey||t.shiftKey||(this.Editor.BlockManager.clearFocused(),this.Editor.BlockSelection.clearSelection(t)))}},{key:"keyup",value:function(t){t.shiftKey||this.Editor.UI.checkEmptiness()}},{key:"tabPressed",value:function(t){this.Editor.BlockSelection.clearSelection(t);var e=this.Editor,n=e.BlockManager,o=e.InlineToolbar,r=e.ConversionToolbar,i=n.currentBlock;if(i){var a=i.isEmpty,s=i.tool.isDefault&&a,l=!a&&r.opened,c=!a&&!f.default.isCollapsed&&o.opened;s?this.activateToolbox():l||c||this.activateBlockSettings()}}},{key:"dragOver",value:function(t){this.Editor.BlockManager.getBlockByChildNode(t.target).dropTarget=!0}},{key:"dragLeave",value:function(t){this.Editor.BlockManager.getBlockByChildNode(t.target).dropTarget=!1}},{key:"handleCommandC",value:function(t){var e=this.Editor.BlockSelection;e.anyBlockSelected&&e.copySelectedBlocks(t)}},{key:"handleCommandX",value:function(t){var e=this.Editor,n=e.BlockSelection,o=e.BlockManager,r=e.Caret;n.anyBlockSelected&&n.copySelectedBlocks(t).then((function(){var e=o.removeSelectedBlocks(),i=o.insertDefaultBlockAtIndex(e,!0);r.setToBlock(i,r.positions.START),n.clearSelection(t)}))}},{key:"enter",value:function(t){var e=this.Editor,n=e.BlockManager,o=e.UI;if(!n.currentBlock.tool.isLineBreaksEnabled&&!(o.someToolbarOpened&&o.someFlipperButtonFocused||t.shiftKey)){var r=this.Editor.BlockManager.currentBlock;this.Editor.Caret.isAtStart&&!this.Editor.BlockManager.currentBlock.hasMedia?this.Editor.BlockManager.insertDefaultBlockAtIndex(this.Editor.BlockManager.currentBlockIndex):r=this.Editor.BlockManager.split(),this.Editor.Caret.setToBlock(r),this.Editor.Toolbar.moveAndOpen(r),t.preventDefault()}}},{key:"backspace",value:function(t){var e=this.Editor,n=e.BlockManager,o=e.BlockSelection,r=e.Caret,i=n.currentBlock,a=i.tool;if(i.selected||i.isEmpty&&i.currentInput===i.firstInput){t.preventDefault();var s=n.currentBlockIndex;return n.previousBlock&&0===n.previousBlock.inputs.length?n.removeBlock(s-1):n.removeBlock(),r.setToBlock(n.currentBlock,s?r.positions.END:r.positions.START),this.Editor.Toolbar.close(),void o.clearSelection(t)}if(!a.isLineBreaksEnabled||r.isAtStart){var l=0===n.currentBlockIndex;r.isAtStart&&f.default.isCollapsed&&i.currentInput===i.firstInput&&!l&&(t.preventDefault(),this.mergeBlocks())}}},{key:"mergeBlocks",value:function(){var t=this.Editor,e=t.BlockManager,n=t.Caret,o=t.Toolbar,r=e.previousBlock,i=e.currentBlock;if(i.name!==r.name||!r.mergeable)return 0===r.inputs.length||r.isEmpty?(e.removeBlock(e.currentBlockIndex-1),n.setToBlock(e.currentBlock),void o.close()):void(n.navigatePrevious()&&o.close());n.createShadow(r.pluginsContent),e.mergeBlocks(r,i).then((function(){n.restoreCaret(r.pluginsContent),r.pluginsContent.normalize(),o.close()}))}},{key:"arrowRightAndDown",value:function(t){var e=this,n=d.default.usedKeys.includes(t.keyCode)&&(!t.shiftKey||t.keyCode===u.keyCodes.TAB);if(!this.Editor.UI.someToolbarOpened||!n){this.Editor.BlockManager.clearFocused(),this.Editor.Toolbar.close();var o=this.Editor.Caret.isAtEnd||this.Editor.BlockSelection.anyBlockSelected;t.shiftKey&&t.keyCode===u.keyCodes.DOWN&&o?this.Editor.CrossBlockSelection.toggleBlockSelectedState():((t.keyCode===u.keyCodes.DOWN||t.keyCode===u.keyCodes.RIGHT&&!this.isRtl?this.Editor.Caret.navigateNext():this.Editor.Caret.navigatePrevious())?t.preventDefault():u.delay((function(){e.Editor.BlockManager.currentBlock&&e.Editor.BlockManager.currentBlock.updateCurrentInput()}),20)(),this.Editor.BlockSelection.clearSelection(t))}}},{key:"arrowLeftAndUp",value:function(t){var e=this;if(this.Editor.UI.someToolbarOpened){if(d.default.usedKeys.includes(t.keyCode)&&(!t.shiftKey||t.keyCode===u.keyCodes.TAB))return;this.Editor.UI.closeAllToolbars()}this.Editor.BlockManager.clearFocused(),this.Editor.Toolbar.close();var n=this.Editor.Caret.isAtStart||this.Editor.BlockSelection.anyBlockSelected;t.shiftKey&&t.keyCode===u.keyCodes.UP&&n?this.Editor.CrossBlockSelection.toggleBlockSelectedState(!1):((t.keyCode===u.keyCodes.UP||t.keyCode===u.keyCodes.LEFT&&!this.isRtl?this.Editor.Caret.navigatePrevious():this.Editor.Caret.navigateNext())?t.preventDefault():u.delay((function(){e.Editor.BlockManager.currentBlock&&e.Editor.BlockManager.currentBlock.updateCurrentInput()}),20)(),this.Editor.BlockSelection.clearSelection(t))}},{key:"needToolbarClosing",value:function(t){var e=t.keyCode===u.keyCodes.ENTER&&this.Editor.Toolbar.toolbox.opened,n=t.keyCode===u.keyCodes.ENTER&&this.Editor.BlockSettings.opened,o=t.keyCode===u.keyCodes.ENTER&&this.Editor.InlineToolbar.opened,r=t.keyCode===u.keyCodes.ENTER&&this.Editor.ConversionToolbar.opened,i=t.keyCode===u.keyCodes.TAB;return!(t.shiftKey||i||e||n||o||r)}},{key:"activateToolbox",value:function(){this.Editor.Toolbar.opened||this.Editor.Toolbar.moveAndOpen(),this.Editor.Toolbar.toolbox.open()}},{key:"activateBlockSettings",value:function(){this.Editor.Toolbar.opened||(this.Editor.BlockManager.currentBlock.focused=!0,this.Editor.Toolbar.moveAndOpen()),this.Editor.BlockSettings.opened||this.Editor.BlockSettings.open()}}]),o}(c.default);o.default=g,g.displayName="BlockEvents",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(20),n(21),n(2),n(3),n(5),n(6),n(4),n(61),n(9),n(14),n(7),n(382),n(112),n(383)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p,h,v,g,y){"use strict";var b=n(8),m=n(1);function k(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=m(r),i=m(i),a=m(a),s=m(s),l=m(l),c=m(c),u=m(u),f=b(f),d=m(d),p=m(p),h=b(h),v=m(v),g=m(g);var x=function(t){(0,l.default)(b,t);var e,n,o,d=(e=b,function(){var t,n=(0,u.default)(e);if(k()){var o=(0,u.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,c.default)(this,t)});function b(){var t;return(0,a.default)(this,b),(t=d.apply(this,arguments))._currentBlockIndex=-1,t._blocks=null,t}return(0,s.default)(b,[{key:"prepare",value:function(){var t=this,e=new v.default(this.Editor.UI.nodes.redactor);this._blocks=new Proxy(e,{set:v.default.set,get:v.default.get}),this.listeners.on(document,"copy",(function(e){return t.Editor.BlockEvents.handleCommandC(e)}))}},{key:"toggleReadOnly",value:function(t){t?this.disableModuleBindings():this.enableModuleBindings()}},{key:"composeBlock",value:function(t){var e=t.tool,n=t.data,o=void 0===n?{}:n,r=t.id,i=void 0===r?void 0:r,a=t.tunes,s=void 0===a?{}:a,l=this.Editor.ReadOnly.isEnabled,c=this.Editor.Tools.blockTools.get(e),u=new f.default({id:i,data:o,tool:c,api:this.Editor.API,readOnly:l,tunesData:s});return l||this.bindBlockEvents(u),u}},{key:"insert",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.id,n=void 0===e?void 0:e,o=t.tool,r=void 0===o?this.config.defaultBlock:o,i=t.data,a=void 0===i?{}:i,s=t.index,l=t.needToFocus,c=void 0===l||l,u=t.replace,f=void 0!==u&&u,d=t.tunes,p=void 0===d?{}:d,h=s;void 0===h&&(h=this.currentBlockIndex+(f?0:1));var v=this.composeBlock({id:n,tool:r,data:a,tunes:p});return f&&this.blockDidMutated(y.BlockMutationType.Removed,this.getBlockByIndex(h),{index:h}),this._blocks.insert(h,v,f),this.blockDidMutated(y.BlockMutationType.Added,v,{index:h}),c?this.currentBlockIndex=h:h<=this.currentBlockIndex&&this.currentBlockIndex++,v}},{key:"replace",value:function(t){var e=t.tool,n=void 0===e?this.config.defaultBlock:e,o=t.data,r=void 0===o?{}:o;return this.insert({tool:n,data:r,index:this.currentBlockIndex,replace:!0})}},{key:"paste",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.insert({tool:t,replace:n});try{o.call(f.BlockToolAPI.ON_PASTE,e)}catch(e){h.log("".concat(t,": onPaste callback call is failed"),"error",e)}return o}},{key:"insertDefaultBlockAtIndex",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.composeBlock({tool:this.config.defaultBlock});return this._blocks[t]=n,this.blockDidMutated(y.BlockMutationType.Added,n,{index:t}),e?this.currentBlockIndex=t:t<=this.currentBlockIndex&&this.currentBlockIndex++,n}},{key:"insertAtEnd",value:function(){return this.currentBlockIndex=this.blocks.length-1,this.insert()}},{key:"mergeBlocks",value:(o=(0,i.default)(r.default.mark((function t(e,n){var o,i;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=this._blocks.indexOf(n),!n.isEmpty){t.next=3;break}return t.abrupt("return");case 3:return t.next=5,n.data;case 5:if(i=t.sent,h.isEmpty(i)){t.next=9;break}return t.next=9,e.mergeWith(i);case 9:this.removeBlock(o),this.currentBlockIndex=this._blocks.indexOf(e);case 11:case"end":return t.stop()}}),t,this)}))),function(t,e){return o.apply(this,arguments)})},{key:"removeBlock",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentBlockIndex;if(!this.validateIndex(t))throw new Error("Can't find a Block to remove");var e=this._blocks[t];e.destroy(),this._blocks.remove(t),this.blockDidMutated(y.BlockMutationType.Removed,e,{index:t}),this.currentBlockIndex>=t&&this.currentBlockIndex--,this.blocks.length?0===t&&(this.currentBlockIndex=0):(this.currentBlockIndex=-1,this.insert())}},{key:"removeSelectedBlocks",value:function(){for(var t,e=this.blocks.length-1;e>=0;e--)this.blocks[e].selected&&(this.removeBlock(e),t=e);return t}},{key:"removeAllBlocks",value:function(){for(var t=this.blocks.length-1;t>=0;t--)this._blocks.remove(t);this.currentBlockIndex=-1,this.insert(),this.currentBlock.firstInput.focus()}},{key:"split",value:function(){var t=this.Editor.Caret.extractFragmentFromCaretPosition(),e=p.default.make("div");e.appendChild(t);var n={text:p.default.isEmpty(e)?"":e.innerHTML};return this.insert({data:n})}},{key:"getBlockByIndex",value:function(t){return-1===t&&(t=this._blocks.length-1),this._blocks[t]}},{key:"getBlockIndex",value:function(t){return this._blocks.indexOf(t)}},{key:"getBlockById",value:function(t){return this._blocks.array.find((function(e){return e.id===t}))}},{key:"getBlock",value:function(t){p.default.isElement(t)||(t=t.parentNode);var e=this._blocks.nodes,n=t.closest(".".concat(f.default.CSS.wrapper)),o=e.indexOf(n);if(o>=0)return this._blocks[o]}},{key:"highlightCurrentNode",value:function(){this.clearFocused(),this.currentBlock.focused=!0}},{key:"clearFocused",value:function(){this.blocks.forEach((function(t){t.focused=!1}))}},{key:"setCurrentBlockByChildNode",value:function(t){p.default.isElement(t)||(t=t.parentNode);var e=t.closest(".".concat(f.default.CSS.wrapper));if(e){var n=e.closest(".".concat(this.Editor.UI.CSS.editorWrapper));if(null==n?void 0:n.isEqualNode(this.Editor.UI.nodes.wrapper))return this.currentBlockIndex=this._blocks.nodes.indexOf(e),this.currentBlock.updateCurrentInput(),this.currentBlock}}},{key:"getBlockByChildNode",value:function(t){p.default.isElement(t)||(t=t.parentNode);var e=t.closest(".".concat(f.default.CSS.wrapper));return this.blocks.find((function(t){return t.holder===e}))}},{key:"swap",value:function(t,e){this._blocks.swap(t,e),this.currentBlockIndex=e}},{key:"move",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.currentBlockIndex;isNaN(t)||isNaN(e)?h.log("Warning during 'move' call: incorrect indices provided.","warn"):this.validateIndex(t)&&this.validateIndex(e)?(this._blocks.move(t,e),this.currentBlockIndex=t,this.blockDidMutated(y.BlockMutationType.Moved,this.currentBlock,{fromIndex:e,toIndex:t})):h.log("Warning during 'move' call: indices cannot be lower than 0 or greater than the amount of blocks.","warn")}},{key:"dropPointer",value:function(){this.currentBlockIndex=-1,this.clearFocused()}},{key:"clear",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._blocks.removeAll(),this.dropPointer(),t&&this.insert(),this.Editor.UI.checkEmptiness()}},{key:"destroy",value:(n=(0,i.default)(r.default.mark((function t(){return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.all(this.blocks.map((function(t){return t.destroy()})));case 2:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"bindBlockEvents",value:function(t){var e=this,n=this.Editor.BlockEvents;this.readOnlyMutableListeners.on(t.holder,"keydown",(function(t){n.keydown(t)})),this.readOnlyMutableListeners.on(t.holder,"keyup",(function(t){n.keyup(t)})),this.readOnlyMutableListeners.on(t.holder,"dragover",(function(t){n.dragOver(t)})),this.readOnlyMutableListeners.on(t.holder,"dragleave",(function(t){n.dragLeave(t)})),t.on("didMutated",(function(t){return e.blockDidMutated(y.BlockMutationType.Changed,t,{index:e.getBlockIndex(t)})}))}},{key:"disableModuleBindings",value:function(){this.readOnlyMutableListeners.clearAll()}},{key:"enableModuleBindings",value:function(){var t=this;this.readOnlyMutableListeners.on(document,"cut",(function(e){return t.Editor.BlockEvents.handleCommandX(e)})),this.blocks.forEach((function(e){t.bindBlockEvents(e)}))}},{key:"validateIndex",value:function(t){return!(t<0||t>=this._blocks.length)}},{key:"blockDidMutated",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=new CustomEvent(t,{detail:Object.assign({target:new g.default(e)},n)});return this.Editor.ModificationsObserver.onChange(o),e}},{key:"currentBlockIndex",get:function(){return this._currentBlockIndex},set:function(t){this._blocks[this._currentBlockIndex]&&this._blocks[this._currentBlockIndex].willUnselect(),this._blocks[t]&&this._blocks[t].willSelect(),this._currentBlockIndex=t}},{key:"firstBlock",get:function(){return this._blocks[0]}},{key:"lastBlock",get:function(){return this._blocks[this._blocks.length-1]}},{key:"currentBlock",get:function(){return this._blocks[this.currentBlockIndex]},set:function(t){this.currentBlockIndex=this.getBlockIndex(t)}},{key:"nextBlock",get:function(){return this.currentBlockIndex===this._blocks.length-1?null:this._blocks[this.currentBlockIndex+1]}},{key:"nextContentfulBlock",get:function(){return this.blocks.slice(this.currentBlockIndex+1).find((function(t){return!!t.inputs.length}))}},{key:"previousContentfulBlock",get:function(){return this.blocks.slice(0,this.currentBlockIndex).reverse().find((function(t){return!!t.inputs.length}))}},{key:"previousBlock",get:function(){return 0===this.currentBlockIndex?null:this._blocks[this.currentBlockIndex-1]}},{key:"blocks",get:function(){return this._blocks.array}},{key:"isEditorEmpty",get:function(){return this.blocks.every((function(t){return t.isEmpty}))}}]),b}(d.default);o.default=x,x.displayName="BlockManager",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9),n(7),n(14),n(115),n(25),n(67)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p,h){"use strict";var v=n(8),g=n(1);function y(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=g(r),i=g(i),a=g(a),s=g(s),l=g(l),c=g(c),u=v(u),f=g(f),d=g(d),p=g(p);var b=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(y()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){var t;return(0,r.default)(this,o),(t=n.apply(this,arguments)).anyBlockSelectedCache=null,t.needToSelectAll=!1,t.nativeInputSelected=!1,t.readyToBlockSelection=!1,t}return(0,i.default)(o,[{key:"prepare",value:function(){var t=this;this.selection=new p.default,d.default.add({name:"CMD+A",handler:function(e){var n=t.Editor,o=n.BlockManager;if(n.ReadOnly.isEnabled)return e.preventDefault(),void t.selectAllBlocks();o.currentBlock&&t.handleCommandA(e)},on:this.Editor.UI.nodes.redactor})}},{key:"toggleReadOnly",value:function(t){p.default.get().removeAllRanges(),this.allBlocksSelected=!1}},{key:"unSelectBlockByIndex",value:function(t){var e=this.Editor.BlockManager;(isNaN(t)?e.currentBlock:e.getBlockByIndex(t)).selected=!1,this.clearCache()}},{key:"clearSelection",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.Editor,o=n.BlockManager,r=n.Caret,i=n.RectangleSelection;this.needToSelectAll=!1,this.nativeInputSelected=!1,this.readyToBlockSelection=!1;var a=t&&t instanceof KeyboardEvent,s=a&&u.isPrintableKey(t.keyCode);if(this.anyBlockSelected&&a&&s&&!p.default.isSelectionExists){var l=o.removeSelectedBlocks();o.insertDefaultBlockAtIndex(l,!0),r.setToBlock(o.currentBlock),u.delay((function(){var e=t.key;r.insertContentAtCaretPosition(e.length>1?"":e)}),20)()}this.Editor.CrossBlockSelection.clear(t),this.anyBlockSelected&&!i.isRectActivated()?(e&&this.selection.restore(),this.allBlocksSelected=!1):this.Editor.RectangleSelection.clearSelection()}},{key:"copySelectedBlocks",value:function(t){var e=this;t.preventDefault();var n=f.default.make("div");this.selectedBlocks.forEach((function(t){var o=(0,h.clean)(t.holder.innerHTML,e.sanitizerConfig),r=f.default.make("p");r.innerHTML=o,n.appendChild(r)}));var o=Array.from(n.childNodes).map((function(t){return t.textContent})).join("\n\n"),r=n.innerHTML;return t.clipboardData.setData("text/plain",o),t.clipboardData.setData("text/html",r),Promise.all(this.selectedBlocks.map((function(t){return t.save()}))).then((function(n){try{t.clipboardData.setData(e.Editor.Paste.MIME_TYPE,JSON.stringify(n))}catch(t){}}))}},{key:"selectBlockByIndex",value:function(t){var e,n=this.Editor.BlockManager;n.clearFocused(),e=isNaN(t)?n.currentBlock:n.getBlockByIndex(t),this.selection.save(),p.default.get().removeAllRanges(),e.selected=!0,this.clearCache(),this.Editor.InlineToolbar.close()}},{key:"clearCache",value:function(){this.anyBlockSelectedCache=null}},{key:"destroy",value:function(){d.default.remove(this.Editor.UI.nodes.redactor,"CMD+A")}},{key:"handleCommandA",value:function(t){if(this.Editor.RectangleSelection.clearSelection(),!f.default.isNativeInput(t.target)||this.readyToBlockSelection){var e=this.Editor.BlockManager.getBlock(t.target).inputs;e.length>1&&!this.readyToBlockSelection?this.readyToBlockSelection=!0:1!==e.length||this.needToSelectAll?this.needToSelectAll?(t.preventDefault(),this.selectAllBlocks(),this.needToSelectAll=!1,this.readyToBlockSelection=!1,this.Editor.ConversionToolbar.close()):this.readyToBlockSelection&&(t.preventDefault(),this.selectBlockByIndex(),this.needToSelectAll=!0):this.needToSelectAll=!0}else this.readyToBlockSelection=!0}},{key:"selectAllBlocks",value:function(){this.selection.save(),p.default.get().removeAllRanges(),this.allBlocksSelected=!0,this.Editor.InlineToolbar.close()}},{key:"sanitizerConfig",get:function(){return{p:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},ol:{},ul:{},li:{},br:!0,img:{src:!0,width:!0,height:!0},a:{href:!0},b:{},i:{},u:{}}}},{key:"allBlocksSelected",get:function(){return this.Editor.BlockManager.blocks.every((function(t){return!0===t.selected}))},set:function(t){this.Editor.BlockManager.blocks.forEach((function(e){e.selected=t})),this.clearCache()}},{key:"anyBlockSelected",get:function(){var t=this.Editor.BlockManager;return null===this.anyBlockSelectedCache&&(this.anyBlockSelectedCache=t.blocks.some((function(t){return!0===t.selected}))),this.anyBlockSelectedCache}},{key:"selectedBlocks",get:function(){return this.Editor.BlockManager.blocks.filter((function(t){return t.selected}))}}]),o}(c.default);o.default=b,b.displayName="BlockSelection",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(25),n(9),n(14),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d){"use strict";var p=n(8),h=n(1);function v(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=h(r),i=h(i),a=h(a),s=h(s),l=h(l),c=h(c),u=h(u),f=h(f),d=p(d);var g=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(v()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){return(0,r.default)(this,o),n.apply(this,arguments)}return(0,i.default)(o,[{key:"setToBlock",value:function(t){var e,n=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.positions.DEFAULT,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=this.Editor.BlockManager;switch(o){case this.positions.START:e=t.firstInput;break;case this.positions.END:e=t.lastInput;break;default:e=t.currentInput}if(e){var a=f.default.getDeepestNode(e,o===this.positions.END),s=f.default.getContentLength(a);switch(!0){case o===this.positions.START:r=0;break;case o===this.positions.END:case r>s:r=s}d.delay((function(){n.set(a,r)}),20)(),i.setCurrentBlockByChildNode(t.holder),i.currentBlock.currentInput=e}}},{key:"setToInput",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.positions.DEFAULT,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=this.Editor.BlockManager.currentBlock,r=f.default.getDeepestNode(t);switch(e){case this.positions.START:this.set(r,0);break;case this.positions.END:this.set(r,f.default.getContentLength(r));break;default:n&&this.set(r,n)}o.currentInput=t}},{key:"set",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=c.default.setCursor(t,e),o=n.top,r=n.bottom,i=window,a=i.innerHeight;o<0&&window.scrollBy(0,o),r>a&&window.scrollBy(0,r-a)}},{key:"setToTheLastBlock",value:function(){var t=this.Editor.BlockManager.lastBlock;if(t)if(t.tool.isDefault&&t.isEmpty)this.setToBlock(t);else{var e=this.Editor.BlockManager.insertAtEnd();this.setToBlock(e)}}},{key:"extractFragmentFromCaretPosition",value:function(){var t=c.default.get();if(t.rangeCount){var e=t.getRangeAt(0),n=this.Editor.BlockManager.currentBlock.currentInput;if(e.deleteContents(),n){if(f.default.isNativeInput(n)){var o=n,r=document.createDocumentFragment(),i=o.value.substring(0,o.selectionStart),a=o.value.substring(o.selectionStart);return r.textContent=a,o.value=i,r}var s=e.cloneRange();return s.selectNodeContents(n),s.setStart(e.endContainer,e.endOffset),s.extractContents()}}}},{key:"navigateNext",value:function(){var t=this.Editor.BlockManager,e=t.currentBlock,n=t.nextContentfulBlock,o=e.nextInput,r=this.isAtEnd,i=n;if(!i&&!o){if(e.tool.isDefault||!r)return!1;i=t.insertAtEnd()}return!!r&&(o?this.setToInput(o,this.positions.START):this.setToBlock(i,this.positions.START),!0)}},{key:"navigatePrevious",value:function(){var t=this.Editor.BlockManager,e=t.currentBlock,n=t.previousContentfulBlock;if(!e)return!1;var o=e.previousInput;return!(!n&&!o||!this.isAtStart||(o?this.setToInput(o,this.positions.END):this.setToBlock(n,this.positions.END),0))}},{key:"createShadow",value:function(t){var e=document.createElement("span");e.classList.add(o.CSS.shadowCaret),t.insertAdjacentElement("beforeend",e)}},{key:"restoreCaret",value:function(t){var e=t.querySelector(".".concat(o.CSS.shadowCaret));e&&((new c.default).expandToTag(e),setTimeout((function(){var t=document.createRange();t.selectNode(e),t.extractContents()}),50))}},{key:"insertContentAtCaretPosition",value:function(t){var e=document.createDocumentFragment(),n=document.createElement("div"),o=c.default.get(),r=c.default.range;n.innerHTML=t,Array.from(n.childNodes).forEach((function(t){return e.appendChild(t)})),0===e.childNodes.length&&e.appendChild(new Text);var i=e.lastChild;r.deleteContents(),r.insertNode(e);var a=document.createRange();a.setStart(i,i.textContent.length),o.removeAllRanges(),o.addRange(a)}},{key:"getHigherLevelSiblings",value:function(t,e){for(var n=t,o=[];n.parentNode&&"true"!==n.parentNode.contentEditable;)n=n.parentNode;for(var r="left"===e?"previousSibling":"nextSibling";n[r];)n=n[r],o.push(n);return o}},{key:"positions",get:function(){return{START:"start",END:"end",DEFAULT:"default"}}},{key:"isAtStart",get:function(){var t=c.default.get(),e=f.default.getDeepestNode(this.Editor.BlockManager.currentBlock.currentInput),n=t.focusNode;if(f.default.isNativeInput(e))return 0===e.selectionEnd;if(!t.anchorNode)return!1;var o=n.textContent.search(/\S/);-1===o&&(o=0);var r=t.focusOffset;return n.nodeType!==Node.TEXT_NODE&&n.childNodes.length&&(n.childNodes[r]?(n=n.childNodes[r],r=0):r=(n=n.childNodes[r-1]).textContent.length),!(!f.default.isLineBreakTag(e)&&!f.default.isEmpty(e)||!this.getHigherLevelSiblings(n,"left").every((function(t){var e=f.default.isLineBreakTag(t),n=1===t.children.length&&f.default.isLineBreakTag(t.children[0]),o=e||n;return f.default.isEmpty(t)&&!o}))||r!==o)||(null===e||n===e&&r<=o)}},{key:"isAtEnd",get:function(){var t=c.default.get(),e=t.focusNode,n=f.default.getDeepestNode(this.Editor.BlockManager.currentBlock.currentInput,!0);if(f.default.isNativeInput(n))return n.selectionEnd===n.value.length;if(!t.focusNode)return!1;var o=t.focusOffset;if(e.nodeType!==Node.TEXT_NODE&&e.childNodes.length&&(e.childNodes[o-1]?o=(e=e.childNodes[o-1]).textContent.length:(e=e.childNodes[0],o=0)),f.default.isLineBreakTag(n)||f.default.isEmpty(n)){var r=this.getHigherLevelSiblings(e,"right");if(r.every((function(t,e){return e===r.length-1&&f.default.isLineBreakTag(t)||f.default.isEmpty(t)&&!f.default.isLineBreakTag(t)}))&&o===e.textContent.length)return!0}var i=n.textContent.replace(/\s+$/,"");return e===n&&o>=i.length}}],[{key:"CSS",get:function(){return{shadowCaret:"cdx-shadow-caret"}}}]),o}(u.default);o.default=g,g.displayName="Caret",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(20),n(21),n(2),n(3),n(5),n(6),n(4),n(9),n(25),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p){"use strict";var h=n(8),v=n(1);function g(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=v(r),i=v(i),a=v(a),s=v(s),l=v(l),c=v(c),u=v(u),f=v(f),d=v(d),p=h(p);var y=function(t){(0,l.default)(f,t);var e,n,o=(e=f,function(){var t,n=(0,u.default)(e);if(g()){var o=(0,u.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,c.default)(this,t)});function f(){var t;return(0,a.default)(this,f),(t=o.apply(this,arguments)).onMouseUp=function(){t.listeners.off(document,"mouseover",t.onMouseOver),t.listeners.off(document,"mouseup",t.onMouseUp)},t.onMouseOver=function(e){var n=t.Editor,o=n.BlockManager,r=n.BlockSelection,i=o.getBlockByChildNode(e.relatedTarget)||t.lastSelectedBlock,a=o.getBlockByChildNode(e.target);if(i&&a&&a!==i){if(i===t.firstSelectedBlock)return d.default.get().removeAllRanges(),i.selected=!0,a.selected=!0,void r.clearCache();if(a===t.firstSelectedBlock)return i.selected=!1,a.selected=!1,void r.clearCache();t.Editor.InlineToolbar.close(),t.toggleBlocksSelectedState(i,a),t.lastSelectedBlock=a}},t}return(0,s.default)(f,[{key:"prepare",value:(n=(0,i.default)(r.default.mark((function t(){var e=this;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.listeners.on(document,"mousedown",(function(t){e.enableCrossBlockSelection(t)}));case 1:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"watchSelection",value:function(t){if(t.button===p.mouseButtons.LEFT){var e=this.Editor.BlockManager;this.firstSelectedBlock=e.getBlock(t.target),this.lastSelectedBlock=this.firstSelectedBlock,this.listeners.on(document,"mouseover",this.onMouseOver),this.listeners.on(document,"mouseup",this.onMouseUp)}}},{key:"toggleBlockSelectedState",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=this.Editor,n=e.BlockManager,o=e.BlockSelection;this.lastSelectedBlock||(this.lastSelectedBlock=this.firstSelectedBlock=n.currentBlock),this.firstSelectedBlock===this.lastSelectedBlock&&(this.firstSelectedBlock.selected=!0,o.clearCache(),d.default.get().removeAllRanges());var r=n.blocks.indexOf(this.lastSelectedBlock)+(t?1:-1),i=n.blocks[r];i&&(this.lastSelectedBlock.selected!==i.selected?(i.selected=!0,o.clearCache()):(this.lastSelectedBlock.selected=!1,o.clearCache()),this.lastSelectedBlock=i,this.Editor.InlineToolbar.close(),i.holder.scrollIntoView({block:"nearest"}))}},{key:"clear",value:function(t){var e=this.Editor,n=e.BlockManager,o=e.BlockSelection,r=e.Caret,i=n.blocks.indexOf(this.firstSelectedBlock),a=n.blocks.indexOf(this.lastSelectedBlock);if(o.anyBlockSelected&&i>-1&&a>-1)if(t&&t instanceof KeyboardEvent)switch(t.keyCode){case p.keyCodes.DOWN:case p.keyCodes.RIGHT:r.setToBlock(n.blocks[Math.max(i,a)],r.positions.END);break;case p.keyCodes.UP:case p.keyCodes.LEFT:r.setToBlock(n.blocks[Math.min(i,a)],r.positions.START);break;default:r.setToBlock(n.blocks[Math.max(i,a)],r.positions.END)}else r.setToBlock(n.blocks[Math.max(i,a)],r.positions.END);this.firstSelectedBlock=this.lastSelectedBlock=null}},{key:"enableCrossBlockSelection",value:function(t){var e=this.Editor.UI;d.default.isCollapsed||this.Editor.BlockSelection.clearSelection(t),e.nodes.redactor.contains(t.target)?this.watchSelection(t):this.Editor.BlockSelection.clearSelection(t)}},{key:"toggleBlocksSelectedState",value:function(t,e){for(var n=this.Editor,o=n.BlockManager,r=n.BlockSelection,i=o.blocks.indexOf(t),a=o.blocks.indexOf(e),s=t.selected!==e.selected,l=Math.min(i,a);l<=Math.max(i,a);l++){var c=o.blocks[l];c!==this.firstSelectedBlock&&c!==(s?t:e)&&(o.blocks[l].selected=!o.blocks[l].selected,r.clearCache())}}},{key:"isCrossBlockSelectionStarted",get:function(){return!!this.firstSelectedBlock&&!!this.lastSelectedBlock}}]),f}(f.default);o.default=y,y.displayName="CrossBlockSelection",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(20),n(21),n(2),n(3),n(5),n(6),n(4),n(25),n(9)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d){"use strict";var p=n(1);function h(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=p(r),i=p(i),a=p(a),s=p(s),l=p(l),c=p(c),u=p(u),f=p(f);var v=function(t){(0,l.default)(d,t);var e,n,o=(e=d,function(){var t,n=(0,u.default)(e);if(h()){var o=(0,u.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,c.default)(this,t)});function d(){var t;return(0,a.default)(this,d),(t=o.apply(this,arguments)).isStartedAtEditor=!1,t}return(0,s.default)(d,[{key:"toggleReadOnly",value:function(t){t?this.disableModuleBindings():this.enableModuleBindings()}},{key:"enableModuleBindings",value:function(){var t=this,e=this.Editor.UI;this.readOnlyMutableListeners.on(e.nodes.holder,"drop",function(){var e=(0,i.default)(r.default.mark((function e(n){return r.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.processDrop(n);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),!0),this.readOnlyMutableListeners.on(e.nodes.holder,"dragstart",(function(){t.processDragStart()})),this.readOnlyMutableListeners.on(e.nodes.holder,"dragover",(function(e){t.processDragOver(e)}),!0)}},{key:"disableModuleBindings",value:function(){this.readOnlyMutableListeners.clearAll()}},{key:"processDrop",value:(n=(0,i.default)(r.default.mark((function t(e){var n,o,i,a,s,l;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.Editor,o=n.BlockManager,i=n.Caret,a=n.Paste,e.preventDefault(),o.blocks.forEach((function(t){t.dropTarget=!1})),f.default.isAtEditor&&!f.default.isCollapsed&&this.isStartedAtEditor&&document.execCommand("delete"),this.isStartedAtEditor=!1,(s=o.setCurrentBlockByChildNode(e.target))?this.Editor.Caret.setToBlock(s,i.positions.END):(l=o.setCurrentBlockByChildNode(o.lastBlock.holder),this.Editor.Caret.setToBlock(l,i.positions.END)),t.next=9,a.processDataTransfer(e.dataTransfer,!0);case 9:case"end":return t.stop()}}),t,this)}))),function(t){return n.apply(this,arguments)})},{key:"processDragStart",value:function(){f.default.isAtEditor&&!f.default.isCollapsed&&(this.isStartedAtEditor=!0),this.Editor.InlineToolbar.close()}},{key:"processDragOver",value:function(t){t.preventDefault()}}]),d}((d=p(d)).default);o.default=v,v.displayName="DragNDrop",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u){"use strict";var f=n(8),d=n(1);function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=d(r),i=d(i),a=d(a),s=d(s),l=d(l),c=d(c),u=f(u);var h=function(t){(0,a.default)(o,t);var e,n=(e=o,function(){var t,n=(0,l.default)(e);if(p()){var o=(0,l.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,s.default)(this,t)});function o(){var t;return(0,r.default)(this,o),(t=n.apply(this,arguments)).disabled=!1,t}return(0,i.default)(o,[{key:"enable",value:function(){this.disabled=!1}},{key:"disable",value:function(){this.disabled=!0}},{key:"onChange",value:function(t){!this.disabled&&u.isFunction(this.config.onChange)&&this.config.onChange(this.Editor.API.methods,t)}}]),o}(c.default);o.default=h,h.displayName="ModificationsObserver",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(42),n(30),n(20),n(21),n(2),n(3),n(5),n(6),n(4),n(9),n(14),n(7),n(67)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p,h,v,g){"use strict";var y=n(8),b=n(1);function m(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=b(r),i=b(i),a=b(a),s=b(s),l=b(l),c=b(c),u=b(u),f=b(f),d=b(d),p=b(p),h=b(h),v=y(v);var k=function(t){(0,u.default)(T,t);var e,n,o,p,y,b,k,x,w,S=(e=T,function(){var t,n=(0,d.default)(e);if(m()){var o=(0,d.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,f.default)(this,t)});function T(){var t;return(0,l.default)(this,T),(t=S.apply(this,arguments)).MIME_TYPE="application/x-editor-js",t.toolsTags={},t.tagsByTool={},t.toolsPatterns=[],t.toolsFiles={},t.exceptionList=[],t.processTool=function(e){try{var n=e.create({},{},!1);if(!1===e.pasteConfig)return void t.exceptionList.push(e.name);if(!v.isFunction(n.onPaste))return;t.getTagsConfig(e),t.getFilesConfig(e),t.getPatternsConfig(e)}catch(t){v.log("Paste handling for «".concat(e.name,"» Tool hasn't been set up because of the error"),"warn",t)}},t.handlePasteEvent=function(){var e=(0,s.default)(a.default.mark((function e(n){var o,r,i;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=t.Editor,r=o.BlockManager,i=o.Toolbar,r.currentBlock&&(!t.isNativeBehaviour(n.target)||n.clipboardData.types.includes("Files"))){e.next=3;break}return e.abrupt("return");case 3:if(!r.currentBlock||!t.exceptionList.includes(r.currentBlock.name)){e.next=5;break}return e.abrupt("return");case 5:n.preventDefault(),t.processDataTransfer(n.clipboardData),r.clearFocused(),i.close();case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),t}return(0,c.default)(T,[{key:"prepare",value:(w=(0,s.default)(a.default.mark((function t(){return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.processTools();case 1:case"end":return t.stop()}}),t,this)}))),function(){return w.apply(this,arguments)})},{key:"toggleReadOnly",value:function(t){t?this.unsetCallback():this.setCallback()}},{key:"processDataTransfer",value:(x=(0,s.default)(a.default.mark((function t(e){var n,o,r,i,s,l,c,u,f,d=arguments;return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=d.length>1&&void 0!==d[1]&&d[1],o=this.Editor.Tools,!((r=e.types).includes?r.includes("Files"):r.contains("Files"))){t.next=8;break}return t.next=7,this.processFiles(e.files);case 7:return t.abrupt("return");case 8:if(i=e.getData(this.MIME_TYPE),s=e.getData("text/plain"),l=e.getData("text/html"),!i){t.next=19;break}return t.prev=12,this.insertEditorJSData(JSON.parse(i)),t.abrupt("return");case 17:t.prev=17,t.t0=t.catch(12);case 19:if(n&&s.trim()&&l.trim()&&(l="

"+(l.trim()?l:s)+"

"),c=Object.keys(this.toolsTags).reduce((function(t,e){return t[e.toLowerCase()]=!0,t}),{}),u=Object.assign({},c,o.getAllInlineToolsSanitizeConfig(),{br:{}}),(f=(0,g.clean)(l,u)).trim()&&f.trim()!==s&&h.default.isHTMLString(f)){t.next=28;break}return t.next=26,this.processText(s);case 26:t.next=30;break;case 28:return t.next=30,this.processText(f,!0);case 30:case"end":return t.stop()}}),t,this,[[12,17]])}))),function(t){return x.apply(this,arguments)})},{key:"processText",value:(k=(0,s.default)(a.default.mark((function t(e){var n,o,r,i,l,c,u,f=this,d=arguments;return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=d.length>1&&void 0!==d[1]&&d[1],o=this.Editor,r=o.Caret,i=o.BlockManager,(l=n?this.processHTML(e):this.processPlain(e)).length){t.next=5;break}return t.abrupt("return");case 5:if(1!==l.length){t.next=8;break}return l[0].isBlock?this.processSingleBlock(l.pop()):this.processInlinePaste(l.pop()),t.abrupt("return");case 8:c=i.currentBlock&&i.currentBlock.tool.isDefault,u=c&&i.currentBlock.isEmpty,l.map(function(){var t=(0,s.default)(a.default.mark((function t(e,n){return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",f.insertBlock(e,0===n&&u));case 1:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}()),i.currentBlock&&r.setToBlock(i.currentBlock,r.positions.END);case 12:case"end":return t.stop()}}),t,this)}))),function(t){return k.apply(this,arguments)})},{key:"setCallback",value:function(){this.listeners.on(this.Editor.UI.nodes.holder,"paste",this.handlePasteEvent)}},{key:"unsetCallback",value:function(){this.listeners.off(this.Editor.UI.nodes.holder,"paste",this.handlePasteEvent)}},{key:"processTools",value:function(){var t=this.Editor.Tools.blockTools;Array.from(t.values()).forEach(this.processTool)}},{key:"getTagsConfig",value:function(t){var e=this,n=t.pasteConfig.tags||[];n.forEach((function(n){Object.prototype.hasOwnProperty.call(e.toolsTags,n)?v.log("Paste handler for «".concat(t.name,"» Tool on «").concat(n,"» tag is skipped ")+"because it is already used by «".concat(e.toolsTags[n].tool.name,"» Tool."),"warn"):e.toolsTags[n.toUpperCase()]={tool:t}})),this.tagsByTool[t.name]=n.map((function(t){return t.toUpperCase()}))}},{key:"getFilesConfig",value:function(t){var e=t.pasteConfig.files,n=void 0===e?{}:e,o=n.extensions,r=n.mimeTypes;(o||r)&&(o&&!Array.isArray(o)&&(v.log("«extensions» property of the onDrop config for «".concat(t.name,"» Tool should be an array")),o=[]),r&&!Array.isArray(r)&&(v.log("«mimeTypes» property of the onDrop config for «".concat(t.name,"» Tool should be an array")),r=[]),r&&(r=r.filter((function(e){return!!v.isValidMimeType(e)||(v.log("MIME type value «".concat(e,"» for the «").concat(t.name,"» Tool is not a valid MIME type"),"warn"),!1)}))),this.toolsFiles[t.name]={extensions:o||[],mimeTypes:r||[]})}},{key:"getPatternsConfig",value:function(t){var e=this;t.pasteConfig.patterns&&!v.isEmpty(t.pasteConfig.patterns)&&Object.entries(t.pasteConfig.patterns).forEach((function(n){var o=(0,i.default)(n,2),r=o[0],a=o[1];a instanceof RegExp||v.log("Pattern ".concat(a," for «").concat(t.name,"» Tool is skipped because it should be a Regexp instance."),"warn"),e.toolsPatterns.push({key:r,pattern:a,tool:t})}))}},{key:"isNativeBehaviour",value:function(t){return h.default.isNativeInput(t)}},{key:"processFiles",value:(b=(0,s.default)(a.default.mark((function t(e){var n,o,r,i,s=this;return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.Editor.BlockManager,t.next=3,Promise.all(Array.from(e).map((function(t){return s.processFile(t)})));case 3:o=(o=t.sent).filter((function(t){return!!t})),r=n.currentBlock.tool.isDefault,i=r&&n.currentBlock.isEmpty,o.forEach((function(t,e){n.paste(t.type,t.event,0===e&&i)}));case 8:case"end":return t.stop()}}),t,this)}))),function(t){return b.apply(this,arguments)})},{key:"processFile",value:(y=(0,s.default)(a.default.mark((function t(e){var n,o,r,s,l;return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=v.getFileExtension(e),o=Object.entries(this.toolsFiles).find((function(t){var o=(0,i.default)(t,2),r=(o[0],o[1]),a=r.mimeTypes,s=r.extensions,l=e.type.split("/"),c=(0,i.default)(l,2),u=c[0],f=c[1],d=s.find((function(t){return t.toLowerCase()===n.toLowerCase()})),p=a.find((function(t){var e=t.split("/"),n=(0,i.default)(e,2),o=n[0],r=n[1];return o===u&&(r===f||"*"===r)}));return!!d||!!p}))){t.next=4;break}return t.abrupt("return");case 4:return r=(0,i.default)(o,1),s=r[0],l=this.composePasteEvent("file",{file:e}),t.abrupt("return",{event:l,type:s});case 7:case"end":return t.stop()}}),t,this)}))),function(t){return y.apply(this,arguments)})},{key:"processHTML",value:function(t){var e=this,n=this.Editor.Tools,o=h.default.make("DIV");return o.innerHTML=t,this.getNodes(o).map((function(t){var o,r=n.defaultTool,i=!1;switch(t.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:(o=h.default.make("div")).appendChild(t);break;case Node.ELEMENT_NODE:o=t,i=!0,e.toolsTags[o.tagName]&&(r=e.toolsTags[o.tagName].tool)}var a=r.pasteConfig.tags.reduce((function(t,e){return t[e.toLowerCase()]={},t}),{}),s=Object.assign({},a,r.baseSanitizeConfig);o.innerHTML=(0,g.clean)(o.innerHTML,s);var l=e.composePasteEvent("tag",{data:o});return{content:o,isBlock:i,tool:r.name,event:l}})).filter((function(t){return!h.default.isNodeEmpty(t.content)||h.default.isSingleTag(t.content)}))}},{key:"processPlain",value:function(t){var e=this,n=this.config.defaultBlock;if(!t)return[];var o=n;return t.split(/\r?\n/).filter((function(t){return t.trim()})).map((function(t){var n=h.default.make("div");n.textContent=t;var r=e.composePasteEvent("tag",{data:n});return{content:n,tool:o,isBlock:!1,event:r}}))}},{key:"processSingleBlock",value:(p=(0,s.default)(a.default.mark((function t(e){var n,o,r,i;return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=this.Editor,o=n.Caret,r=n.BlockManager,(i=r.currentBlock)&&e.tool===i.name&&h.default.containsOnlyInlineElements(e.content.innerHTML)){t.next=5;break}return this.insertBlock(e,(null==i?void 0:i.tool.isDefault)&&i.isEmpty),t.abrupt("return");case 5:o.insertContentAtCaretPosition(e.content.innerHTML);case 6:case"end":return t.stop()}}),t,this)}))),function(t){return p.apply(this,arguments)})},{key:"processInlinePaste",value:(o=(0,s.default)(a.default.mark((function t(e){var n,o,r,i,s,l,c,u;return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=this.Editor,o=n.BlockManager,r=n.Caret,i=e.content,!(o.currentBlock&&o.currentBlock.tool.isDefault&&i.textContent.length1&&void 0!==arguments[1]&&arguments[1],o=this.Editor,r=o.BlockManager,i=o.Caret,a=r.currentBlock;if(n&&a&&a.isEmpty)return e=r.paste(t.tool,t.event,!0),void i.setToBlock(e,i.positions.END);e=r.paste(t.tool,t.event),i.setToBlock(e,i.positions.END)}},{key:"insertEditorJSData",value:function(t){var e=this.Editor,n=e.BlockManager,o=e.Caret,r=e.Tools;(0,g.sanitizeBlocks)(t,(function(t){return r.blockTools.get(t).sanitizeConfig})).forEach((function(t,e){var r=t.tool,i=t.data,a=!1;0===e&&(a=n.currentBlock&&n.currentBlock.tool.isDefault&&n.currentBlock.isEmpty);var s=n.insert({tool:r,data:i,replace:a});o.setToBlock(s,o.positions.END)}))}},{key:"processElementNode",value:function(t,e,n){var o=Object.keys(this.toolsTags),i=t,a=(this.toolsTags[i.tagName]||{}).tool,s=this.tagsByTool[null==a?void 0:a.name]||[],l=o.includes(i.tagName),c=h.default.blockElements.includes(i.tagName.toLowerCase()),u=Array.from(i.children).some((function(t){var e=t.tagName;return o.includes(e)&&!s.includes(e)})),f=Array.from(i.children).some((function(t){var e=t.tagName;return h.default.blockElements.includes(e.toLowerCase())}));return c||l||u?l&&!u||c&&!f&&!u?[].concat((0,r.default)(e),[n,i]):void 0:(n.appendChild(i),[].concat((0,r.default)(e),[n]))}},{key:"getNodes",value:function(t){var e,n=this;return Array.from(t.childNodes).reduce((function t(o,i){if(h.default.isEmpty(i)&&!h.default.isSingleTag(i))return o;var a=o[o.length-1],s=new DocumentFragment;switch(a&&h.default.isFragment(a)&&(s=o.pop()),i.nodeType){case Node.ELEMENT_NODE:if(e=n.processElementNode(i,o,s))return e;break;case Node.TEXT_NODE:return s.appendChild(i),[].concat((0,r.default)(o),[s]);default:return[].concat((0,r.default)(o),[s])}return[].concat((0,r.default)(o),(0,r.default)(Array.from(i.childNodes).reduce(t,[])))}),[])}},{key:"composePasteEvent",value:function(t,e){return new CustomEvent(t,{detail:e})}}]),T}(p.default);o.default=k,k.displayName="Paste",k.PATTERN_PROCESSING_MAX_LENGTH=450,t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(20),n(30),n(21),n(2),n(3),n(5),n(6),n(4),n(9),n(151)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p){"use strict";var h=n(1);function v(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=h(r),i=h(i),a=h(a),s=h(s),l=h(l),c=h(c),u=h(u),f=h(f);var g=function(t){(0,c.default)(h,t);var e,n,o,d=(e=h,function(){var t,n=(0,f.default)(e);if(v()){var o=(0,f.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,u.default)(this,t)});function h(){var t;return(0,s.default)(this,h),(t=d.apply(this,arguments)).toolsDontSupportReadOnly=[],t.readOnlyEnabled=!1,t}return(0,l.default)(h,[{key:"prepare",value:(o=(0,a.default)(r.default.mark((function t(){var e,n,o;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=this.Editor.Tools,n=e.blockTools,o=[],Array.from(n.entries()).forEach((function(t){var e=(0,i.default)(t,2),n=e[0];e[1].isReadOnlySupported||o.push(n)})),this.toolsDontSupportReadOnly=o,this.config.readOnly&&o.length>0&&this.throwCriticalError(),this.toggle(this.config.readOnly);case 7:case"end":return t.stop()}}),t,this)}))),function(){return o.apply(this,arguments)})},{key:"toggle",value:(n=(0,a.default)(r.default.mark((function t(){var e,n,o,i,a=arguments;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:(e=a.length>0&&void 0!==a[0]?a[0]:!this.readOnlyEnabled)&&this.toolsDontSupportReadOnly.length>0&&this.throwCriticalError(),n=this.readOnlyEnabled,this.readOnlyEnabled=e,t.t0=r.default.keys(this.Editor);case 5:if((t.t1=t.t0()).done){t.next=12;break}if(o=t.t1.value,this.Editor[o].toggleReadOnly){t.next=9;break}return t.abrupt("continue",5);case 9:this.Editor[o].toggleReadOnly(e),t.next=5;break;case 12:if(n!==e){t.next=14;break}return t.abrupt("return",this.readOnlyEnabled);case 14:return t.next=16,this.Editor.Saver.save();case 16:return i=t.sent,t.next=19,this.Editor.BlockManager.clear();case 19:return t.next=21,this.Editor.Renderer.render(i.blocks);case 21:return t.abrupt("return",this.readOnlyEnabled);case 22:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"throwCriticalError",value:function(){throw new p.CriticalError("To enable read-only mode all connected tools should support it. Tools ".concat(this.toolsDontSupportReadOnly.join(", ")," don't support read-only mode."))}},{key:"isEnabled",get:function(){return this.readOnlyEnabled}}]),h}((d=h(d)).default);o.default=g,g.displayName="ReadOnly",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(5),n(6),n(4),n(9),n(14),n(25),n(61),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p){"use strict";var h=n(8),v=n(1);function g(t){if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(t){if("string"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}(t))){var e=0,n=function(){};return{s:n,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,r,i=!0,a=!1;return{s:function(){o=t[Symbol.iterator]()},n:function(){var t=o.next();return i=t.done,t},e:function(t){a=!0,r=t},f:function(){try{i||null==o.return||o.return()}finally{if(a)throw r}}}}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);nn&&this.mouseX>n,a=this.startX=this.startY?(this.overlayRectangle.style.top="".concat(this.startY-window.pageYOffset,"px"),this.overlayRectangle.style.bottom="calc(100% - ".concat(this.mouseY-window.pageYOffset,"px")):(this.overlayRectangle.style.bottom="calc(100% - ".concat(this.startY-window.pageYOffset,"px"),this.overlayRectangle.style.top="".concat(this.mouseY-window.pageYOffset,"px")),this.mouseX>=this.startX?(this.overlayRectangle.style.left="".concat(this.startX-window.pageXOffset,"px"),this.overlayRectangle.style.right="calc(100% - ".concat(this.mouseX-window.pageXOffset,"px")):(this.overlayRectangle.style.right="calc(100% - ".concat(this.startX-window.pageXOffset,"px"),this.overlayRectangle.style.left="".concat(this.mouseX-window.pageXOffset,"px"))}},{key:"genInfoForMouseSelection",value:function(){var t,e=document.body.offsetWidth/2,n=this.mouseY-window.pageYOffset,o=document.elementFromPoint(e,n),r=this.Editor.BlockManager.getBlockByChildNode(o);void 0!==r&&(t=this.Editor.BlockManager.blocks.findIndex((function(t){return t.holder===r.holder})));var i=this.Editor.BlockManager.lastBlock.holder.querySelector("."+d.default.CSS.content),a=Number.parseInt(window.getComputedStyle(i).width,10)/2;return{index:t,leftPos:e-a,rightPos:e+a}}},{key:"addBlockInSelection",value:function(t){this.rectCrossesBlocks&&this.Editor.BlockSelection.selectBlockByIndex(t),this.stackOfSelected.push(t)}},{key:"trySelectNextBlock",value:function(t){var e=this,n=this.stackOfSelected[this.stackOfSelected.length-1]===t,o=this.stackOfSelected.length;if(!n){var r=this.stackOfSelected[o-1]-this.stackOfSelected[o-2]>0,i=0;o>1&&(i=r?1:-1);var a=t>this.stackOfSelected[o-1]&&1===i,s=tthis.stackOfSelected[o-1]||void 0===this.stackOfSelected[o-1])){if(!l&&t=t;c--)this.addBlockInSelection(c);else if(l){var u,f=o-1;for(u=t>this.stackOfSelected[o-1]?function(){return t>e.stackOfSelected[f]}:function(){return t0&&void 0!==arguments[0]?arguments[0]:this.Editor.BlockManager.currentBlock;this.nodes.wrapper.classList.add(this.CSS.wrapperOpened),this.selection.save(),t.selected=!0,this.Editor.BlockSelection.clearCache(),this.addToolSettings(t),this.addTunes(t),this.eventsDispatcher.emit(this.events.opened),this.flipper.activate(this.blockTunesButtons)}},{key:"close",value:function(){this.nodes.wrapper.classList.remove(this.CSS.wrapperOpened),h.default.isAtEditor||this.selection.restore(),this.selection.clearSaved(),!this.Editor.CrossBlockSelection.isCrossBlockSelectionStarted&&this.Editor.BlockManager.currentBlock&&(this.Editor.BlockManager.currentBlock.selected=!1),this.nodes.toolSettings.innerHTML="",this.nodes.defaultSettings.innerHTML="",this.eventsDispatcher.emit(this.events.closed),this.buttons=[],this.flipper.deactivate()}},{key:"addToolSettings",value:function(t){var e=t.renderSettings();e&&f.default.append(this.nodes.toolSettings,e)}},{key:"addTunes",value:function(t){var e=t.renderTunes(),n=(0,r.default)(e,2),o=n[0],i=n[1];f.default.append(this.nodes.toolSettings,o),f.default.append(this.nodes.defaultSettings,i)}},{key:"enableFlipper",value:function(){var t=this;this.flipper=new d.default({focusedItemClass:this.CSS.focusedButton,activateCallback:function(e){e&&f.default.canSetCaret(e)?t.close():p.delay((function(){t.Editor.Caret.setToBlock(t.Editor.BlockManager.currentBlock)}),50)()}})}},{key:"events",get:function(){return{opened:"block-settings-opened",closed:"block-settings-closed"}}},{key:"CSS",get:function(){return{wrapper:"ce-settings",wrapperOpened:"ce-settings--opened",toolSettings:"ce-settings__plugin-zone",defaultSettings:"ce-settings__default-zone",button:"ce-settings__button",focusedButton:"ce-settings__button--focused",focusedButtonAnimated:"ce-settings__button--focused-animated"}}},{key:"opened",get:function(){return this.nodes.wrapper.classList.contains(this.CSS.wrapperOpened)}},{key:"blockTunesButtons",get:function(){var t=this,e=this.Editor.StylesAPI;if(0!==this.buttons.length)return this.buttons;var n=this.nodes.toolSettings.querySelectorAll(".".concat(e.classes.settingsButton,", ").concat(f.default.allInputsSelector)),o=this.nodes.defaultSettings.querySelectorAll(".".concat(this.CSS.button));return n.forEach((function(e){t.buttons.push(e)})),o.forEach((function(e){t.buttons.push(e)})),this.buttons}}]),o}(u.default);o.default=b,b.displayName="BlockSettings",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(30),n(20),n(21),n(42),n(2),n(3),n(5),n(6),n(4),n(9),n(14),n(7),n(62),n(60),n(84),n(67)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p,h,v,g,y,b,m){"use strict";var k=n(8),x=n(1);function w(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=x(r),i=x(i),a=x(a),s=x(s),l=x(l),c=x(c),u=x(u),f=x(f),d=x(d),p=x(p),h=x(h),v=k(v),g=x(g),y=x(y);var S=function(t){(0,u.default)(k,t);var e,n,o,p=(e=k,function(){var t,n=(0,d.default)(e);if(w()){var o=(0,d.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,f.default)(this,t)});function k(){var t;return(0,l.default)(this,k),(t=p.apply(this,arguments)).opened=!1,t.tools=[],t.flipper=null,t.togglingCallback=null,t}return(0,c.default)(k,[{key:"make",value:function(){this.nodes.wrapper=h.default.make("div",[k.CSS.conversionToolbarWrapper].concat((0,s.default)(this.isRtl?[this.Editor.UI.CSS.editorRtlFix]:[]))),this.nodes.tools=h.default.make("div",k.CSS.conversionToolbarTools);var t=h.default.make("div",k.CSS.conversionToolbarLabel,{textContent:y.default.ui(b.I18nInternalNS.ui.inlineToolbar.converter,"Convert to")});return this.addTools(),this.enableFlipper(),h.default.append(this.nodes.wrapper,t),h.default.append(this.nodes.wrapper,this.nodes.tools),this.nodes.wrapper}},{key:"destroy",value:function(){this.flipper&&(this.flipper.deactivate(),this.flipper=null),this.removeAllNodes()}},{key:"toggle",value:function(t){this.opened?this.close():this.open(),v.isFunction(t)&&(this.togglingCallback=t)}},{key:"open",value:function(){var t=this;this.filterTools(),this.opened=!0,this.nodes.wrapper.classList.add(k.CSS.conversionToolbarShowed),window.requestAnimationFrame((function(){t.flipper.activate(t.tools.map((function(t){return t.button})).filter((function(t){return!t.classList.contains(k.CSS.conversionToolHidden)}))),t.flipper.focusFirst(),v.isFunction(t.togglingCallback)&&t.togglingCallback(!0)}))}},{key:"close",value:function(){this.opened=!1,this.flipper.deactivate(),this.nodes.wrapper.classList.remove(k.CSS.conversionToolbarShowed),v.isFunction(this.togglingCallback)&&this.togglingCallback(!1)}},{key:"hasTools",value:function(){return 1!==this.tools.length||this.tools[0].name!==this.config.defaultBlock}},{key:"replaceWithBlock",value:(o=(0,a.default)(i.default.mark((function t(e,n){var o,r,a,s,l,c,u,f,d,p=this;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=this.Editor.BlockManager.currentBlock.tool,t.next=3,this.Editor.BlockManager.currentBlock.save();case 3:if(r=t.sent,a=r.data,s=this.Editor.Tools.blockTools.get(e),l="",c=o.conversionConfig.export,!v.isFunction(c)){t.next=12;break}l=c(a),t.next=18;break;case 12:if(!v.isString(c)){t.next=16;break}l=a[c],t.next=18;break;case 16:return v.log("Conversion «export» property must be a string or function. String means key of saved data object to export. Function should export processed string to export."),t.abrupt("return");case 18:if(u=(0,m.clean)(l,s.sanitizeConfig),f={},d=s.conversionConfig.import,!v.isFunction(d)){t.next=25;break}f=d(u),t.next=31;break;case 25:if(!v.isString(d)){t.next=29;break}f[d]=u,t.next=31;break;case 29:return v.log("Conversion «import» property must be a string or function. String means key of tool data to import. Function accepts a imported string and return composed tool data."),t.abrupt("return");case 31:n&&(f=Object.assign(f,n)),this.Editor.BlockManager.replace({tool:e,data:f}),this.Editor.BlockSelection.clearSelection(),this.close(),this.Editor.InlineToolbar.close(),v.delay((function(){p.Editor.Caret.setToBlock(p.Editor.BlockManager.currentBlock)}),10)();case 37:case"end":return t.stop()}}),t,this)}))),function(t,e){return o.apply(this,arguments)})},{key:"addTools",value:function(){var t=this,e=this.Editor.Tools.blockTools;Array.from(e.entries()).forEach((function(e){var n=(0,r.default)(e,2),o=n[0],i=n[1],a=i.conversionConfig;a&&a.import&&i.toolbox.forEach((function(e){return t.addToolIfValid(o,e)}))}))}},{key:"addToolIfValid",value:function(t,e){!v.isEmpty(e)&&e.icon&&this.addTool(t,e)}},{key:"addTool",value:function(t,e){var n=this,o=h.default.make("div",[k.CSS.conversionTool]),r=h.default.make("div",[k.CSS.conversionToolIcon]);o.dataset.tool=t,r.innerHTML=e.icon,h.default.append(o,r),h.default.append(o,h.default.text(y.default.t(b.I18nInternalNS.toolNames,e.title||v.capitalize(t)))),h.default.append(this.nodes.tools,o),this.tools.push({name:t,button:o,toolboxItem:e}),this.listeners.on(o,"click",(0,a.default)(i.default.mark((function o(){return i.default.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,n.replaceWithBlock(t,e.data);case 2:case"end":return o.stop()}}),o)}))))}},{key:"filterTools",value:(n=(0,a.default)(i.default.mark((function t(){var e,n,o;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=function(t,e){return t.icon===e.icon&&t.title===e.title},e=this.Editor.BlockManager.currentBlock,t.next=4,e.getActiveToolboxEntry();case 4:n=t.sent,this.tools.forEach((function(t){var r=!1;if(n){var i=o(n,t.toolboxItem);r=t.button.dataset.tool===e.name&&i}t.button.hidden=r,t.button.classList.toggle(k.CSS.conversionToolHidden,r)}));case 6:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"enableFlipper",value:function(){this.flipper=new g.default({focusedItemClass:k.CSS.conversionToolFocused})}}],[{key:"CSS",get:function(){return{conversionToolbarWrapper:"ce-conversion-toolbar",conversionToolbarShowed:"ce-conversion-toolbar--showed",conversionToolbarTools:"ce-conversion-toolbar__tools",conversionToolbarLabel:"ce-conversion-toolbar__label",conversionTool:"ce-conversion-tool",conversionToolHidden:"ce-conversion-tool--hidden",conversionToolIcon:"ce-conversion-tool__icon",conversionToolFocused:"ce-conversion-tool--focused",conversionToolActive:"ce-conversion-tool--active"}}}]),k}(p.default);o.default=S,S.displayName="ConversionToolbar",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(20),n(21),n(42),n(30),n(2),n(3),n(5),n(6),n(4),n(9),n(14),n(25),n(7),n(62),n(60),n(84),n(115),n(114),n(68)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p,h,v,g,y,b,m,k,x,w){"use strict";var S=n(8),T=n(1);function E(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=T(r),i=T(i),a=T(a),s=T(s),l=T(l),c=T(c),u=T(u),f=T(f),d=T(d),p=T(p),h=T(h),v=T(v),g=S(g),y=T(y),b=T(b),k=T(k),x=T(x);var B=function(t){(0,u.default)(p,t);var e,n,o=(e=p,function(){var t,n=(0,d.default)(e);if(E()){var o=(0,d.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,f.default)(this,t)});function p(t){var e,n=t.config,r=t.eventsDispatcher;return(0,l.default)(this,p),(e=o.call(this,{config:n,eventsDispatcher:r})).CSS={inlineToolbar:"ce-inline-toolbar",inlineToolbarShowed:"ce-inline-toolbar--showed",inlineToolbarLeftOriented:"ce-inline-toolbar--left-oriented",inlineToolbarRightOriented:"ce-inline-toolbar--right-oriented",inlineToolbarShortcut:"ce-inline-toolbar__shortcut",buttonsWrapper:"ce-inline-toolbar__buttons",actionsWrapper:"ce-inline-toolbar__actions",inlineToolButton:"ce-inline-tool",inputField:"cdx-input",focusedButton:"ce-inline-tool--focused",conversionToggler:"ce-inline-toolbar__dropdown",conversionTogglerHidden:"ce-inline-toolbar__dropdown--hidden",conversionTogglerContent:"ce-inline-toolbar__dropdown-content",togglerAndButtonsWrapper:"ce-inline-toolbar__toggler-and-button-wrapper"},e.opened=!1,e.toolbarVerticalMargin=5,e.buttonsList=null,e.width=0,e.flipper=null,e.tooltip=new x.default,e}return(0,c.default)(p,[{key:"toggleReadOnly",value:function(t){t?(this.destroy(),this.Editor.ConversionToolbar.destroy()):this.make()}},{key:"tryToShow",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.allowedToShow()?(this.move(),this.open(e),this.Editor.Toolbar.close()):t&&this.close()}},{key:"move",value:function(){var t=v.default.rect,e=this.Editor.UI.nodes.wrapper.getBoundingClientRect(),n={x:t.x-e.left,y:t.y+t.height-e.top+this.toolbarVerticalMargin};t.width&&(n.x+=Math.floor(t.width/2));var o=n.x-this.width/2,r=n.x+this.width/2;this.nodes.wrapper.classList.toggle(this.CSS.inlineToolbarLeftOriented,othis.Editor.UI.contentRect.right),this.nodes.wrapper.style.left=Math.floor(n.x)+"px",this.nodes.wrapper.style.top=Math.floor(n.y)+"px"}},{key:"close",value:function(){var t=this;this.opened&&(this.Editor.ReadOnly.isEnabled||(this.nodes.wrapper.classList.remove(this.CSS.inlineToolbarShowed),Array.from(this.toolsInstances.entries()).forEach((function(e){var n=(0,s.default)(e,2),o=n[0],r=n[1],i=t.getToolShortcut(o);i&&k.default.remove(t.Editor.UI.nodes.redactor,i),g.isFunction(r.clear)&&r.clear()})),this.opened=!1,this.flipper.deactivate(),this.Editor.ConversionToolbar.close()))}},{key:"open",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(!this.opened){this.addToolsFiltered(),this.nodes.wrapper.classList.add(this.CSS.inlineToolbarShowed),this.buttonsList=this.nodes.buttons.querySelectorAll(".".concat(this.CSS.inlineToolButton)),this.opened=!0,t&&this.Editor.ConversionToolbar.hasTools()?this.setConversionTogglerContent():this.nodes.conversionToggler.hidden=!0;var e=Array.from(this.buttonsList);e.unshift(this.nodes.conversionToggler),e=e.filter((function(t){return!t.hidden})),this.flipper.activate(e)}}},{key:"containsNode",value:function(t){return this.nodes.wrapper.contains(t)}},{key:"destroy",value:function(){this.flipper&&(this.flipper.deactivate(),this.flipper=null),this.removeAllNodes(),this.tooltip.destroy()}},{key:"make",value:function(){var t=this;this.nodes.wrapper=h.default.make("div",[this.CSS.inlineToolbar].concat((0,a.default)(this.isRtl?[this.Editor.UI.CSS.editorRtlFix]:[]))),this.nodes.togglerAndButtonsWrapper=h.default.make("div",this.CSS.togglerAndButtonsWrapper),this.nodes.buttons=h.default.make("div",this.CSS.buttonsWrapper),this.nodes.actions=h.default.make("div",this.CSS.actionsWrapper),this.listeners.on(this.nodes.wrapper,"mousedown",(function(e){e.target.closest(".".concat(t.CSS.actionsWrapper))||e.preventDefault()})),h.default.append(this.nodes.wrapper,[this.nodes.togglerAndButtonsWrapper,this.nodes.actions]),h.default.append(this.Editor.UI.nodes.wrapper,this.nodes.wrapper),this.addConversionToggler(),h.default.append(this.nodes.togglerAndButtonsWrapper,this.nodes.buttons),this.prepareConversionToolbar(),this.recalculateWidth(),this.enableFlipper()}},{key:"allowedToShow",value:function(){var t=v.default.get(),e=v.default.text;if(!t||!t.anchorNode)return!1;if(t.isCollapsed||e.length<1)return!1;var n=h.default.isElement(t.anchorNode)?t.anchorNode:t.anchorNode.parentElement;if(t&&["IMG","INPUT"].includes(n.tagName))return!1;if(null===n.closest('[contenteditable="true"]'))return!1;var o=this.Editor.BlockManager.getBlock(t.anchorNode);return!!o&&0!==o.tool.inlineTools.size}},{key:"recalculateWidth",value:function(){this.width=this.nodes.wrapper.offsetWidth}},{key:"addConversionToggler",value:function(){var t=this;this.nodes.conversionToggler=h.default.make("div",this.CSS.conversionToggler),this.nodes.conversionTogglerContent=h.default.make("div",this.CSS.conversionTogglerContent);var e=h.default.svg("toggler-down",13,13);this.nodes.conversionToggler.appendChild(this.nodes.conversionTogglerContent),this.nodes.conversionToggler.appendChild(e),this.nodes.togglerAndButtonsWrapper.appendChild(this.nodes.conversionToggler),this.listeners.on(this.nodes.conversionToggler,"click",(function(){t.Editor.ConversionToolbar.toggle((function(e){!e&&t.opened?t.flipper.activate():t.opened&&t.flipper.deactivate()}))})),this.tooltip.onHover(this.nodes.conversionToggler,b.default.ui(m.I18nInternalNS.ui.inlineToolbar.converter,"Convert to"),{placement:"top",hidingDelay:100})}},{key:"setConversionTogglerContent",value:(n=(0,i.default)(r.default.mark((function t(){var e,n,o,i,a,s;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=this.Editor.BlockManager,n=e.currentBlock,o=n.name,i=n.tool.conversionConfig,a=i&&i.export,this.nodes.conversionToggler.hidden=!a,this.nodes.conversionToggler.classList.toggle(this.CSS.conversionTogglerHidden,!a),t.next=9,n.getActiveToolboxEntry();case 9:if(t.t0=t.sent,t.t0){t.next=12;break}t.t0={};case 12:s=t.t0,this.nodes.conversionTogglerContent.innerHTML=s.icon||s.title||g.capitalize(o);case 14:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"prepareConversionToolbar",value:function(){var t=this.Editor.ConversionToolbar.make();h.default.append(this.nodes.wrapper,t)}},{key:"addToolsFiltered",value:function(){var t=this,e=v.default.get(),n=this.Editor.BlockManager.getBlock(e.anchorNode);this.nodes.buttons.innerHTML="",this.nodes.actions.innerHTML="",this.toolsInstances=new Map,Array.from(n.tool.inlineTools.values()).forEach((function(e){t.addTool(e)})),this.recalculateWidth()}},{key:"addTool",value:function(t){var e=this,n=t.create(),o=n.render();if(o){if(o.dataset.tool=t.name,this.nodes.buttons.appendChild(o),this.toolsInstances.set(t.name,n),g.isFunction(n.renderActions)){var r=n.renderActions();this.nodes.actions.appendChild(r)}this.listeners.on(o,"click",(function(t){e.toolClicked(n),t.preventDefault()}));var i=this.getToolShortcut(t.name);if(i)try{this.enableShortcuts(n,i)}catch(t){}var a=h.default.make("div"),s=b.default.t(m.I18nInternalNS.toolNames,t.title||g.capitalize(t.name));a.appendChild(h.default.text(s)),i&&a.appendChild(h.default.make("div",this.CSS.inlineToolbarShortcut,{textContent:g.beautifyShortcut(i)})),this.tooltip.onHover(o,a,{placement:"top",hidingDelay:100}),n.checkState(v.default.get())}else g.log("Render method must return an instance of Node","warn",t.name)}},{key:"getToolShortcut",value:function(t){var e=this.Editor.Tools,n=e.inlineTools.get(t),o=e.internal.inlineTools;return Array.from(o.keys()).includes(t)?this.inlineTools[t][w.CommonInternalSettings.Shortcut]:n.shortcut}},{key:"enableShortcuts",value:function(t,e){var n=this;k.default.add({name:e,handler:function(e){var o=n.Editor.BlockManager.currentBlock;o&&o.tool.enabledInlineTools&&(e.preventDefault(),n.toolClicked(t))},on:this.Editor.UI.nodes.redactor})}},{key:"toolClicked",value:function(t){var e=v.default.range;t.surround(e),this.checkToolsState()}},{key:"checkToolsState",value:function(){this.toolsInstances.forEach((function(t){t.checkState(v.default.get())}))}},{key:"enableFlipper",value:function(){this.flipper=new y.default({focusedItemClass:this.CSS.focusedButton,allowedKeys:[g.keyCodes.ENTER,g.keyCodes.TAB]})}},{key:"inlineTools",get:function(){var t={};return Array.from(this.Editor.Tools.inlineTools.entries()).forEach((function(e){var n=(0,s.default)(e,2),o=n[0],r=n[1];t[o]=r.create()})),t}}]),p}(p.default);o.default=B,B.displayName="InlineToolbar",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(42),n(30),n(20),n(21),n(2),n(3),n(5),n(6),n(4),n(59),n(389),n(9),n(7),n(390),n(391),n(392),n(393),n(394),n(398),n(399),n(400),n(185)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p,h,v,g,y,b,m,k,x,w,S,T,E){"use strict";var B=n(8),C=n(1);function _(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=C(r),i=C(i),a=C(a),s=C(s),l=C(l),c=C(c),u=C(u),f=C(f),d=C(d),p=C(p),h=C(h),v=C(v),g=B(g),y=C(y),b=C(b),m=C(m),k=C(k),x=C(x),w=C(w),S=C(S),T=C(T),E=C(E);var I=function(t,e,n,o){var r,i=arguments.length,a=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"===("undefined"==typeof Reflect?"undefined":(0,p.default)(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,o);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(a=(i<3?r(a):i>3?r(e,n,a):r(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a},O=function(t){(0,u.default)(p,t);var e,n,o=(e=p,function(){var t,n=(0,d.default)(e);if(_()){var o=(0,d.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,f.default)(this,t)});function p(){var t;return(0,l.default)(this,p),(t=o.apply(this,arguments)).stubTool="stub",t.toolsAvailable=new E.default,t.toolsUnavailable=new E.default,t}return(0,c.default)(p,[{key:"prepare",value:(n=(0,s.default)(a.default.mark((function t(){var e,n,o=this;return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.validateTools(),this.config.tools=g.deepMerge({},this.internalTools,this.config.tools),Object.prototype.hasOwnProperty.call(this.config,"tools")&&0!==Object.keys(this.config.tools).length){t.next=4;break}throw Error("Can't start without tools");case 4:if(e=this.prepareConfig(),this.factory=new x.default(e,this.config,this.Editor.API),0!==(n=this.getListOfPrepareFunctions(e)).length){t.next=9;break}return t.abrupt("return",Promise.resolve());case 9:return t.next=11,g.sequence(n,(function(t){o.toolPrepareMethodSuccess(t)}),(function(t){o.toolPrepareMethodFallback(t)}));case 11:this.prepareBlockTools();case 12:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"getAllInlineToolsSanitizeConfig",value:function(){var t={};return Array.from(this.inlineTools.values()).forEach((function(e){Object.assign(t,e.sanitizeConfig)})),t}},{key:"destroy",value:function(){Object.values(this.available).forEach(function(){var t=(0,s.default)(a.default.mark((function t(e){return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!g.isFunction(e.reset)){t.next=3;break}return t.next=3,e.reset();case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())}},{key:"toolPrepareMethodSuccess",value:function(t){var e=this.factory.get(t.toolName);if(e.isInline()){var n=["render","surround","checkState"].filter((function(t){return!e.create()[t]}));if(n.length)return g.log("Incorrect Inline Tool: ".concat(e.name,". Some of required methods is not implemented %o"),"warn",n),void this.toolsUnavailable.set(e.name,e)}this.toolsAvailable.set(e.name,e)}},{key:"toolPrepareMethodFallback",value:function(t){this.toolsUnavailable.set(t.toolName,this.factory.get(t.toolName))}},{key:"getListOfPrepareFunctions",value:function(t){var e=[];return Object.entries(t).forEach((function(t){var n=(0,i.default)(t,2),o=n[0],r=n[1];e.push({function:g.isFunction(r.class.prepare)?r.class.prepare:function(){},data:{toolName:o,config:r.config}})})),e}},{key:"prepareBlockTools",value:function(){var t=this;Array.from(this.blockTools.values()).forEach((function(e){t.assignInlineToolsToBlockTool(e),t.assignBlockTunesToBlockTool(e)}))}},{key:"assignInlineToolsToBlockTool",value:function(t){var e=this;!1!==this.config.inlineToolbar&&(!0!==t.enabledInlineTools?Array.isArray(t.enabledInlineTools)&&(t.inlineTools=new E.default(t.enabledInlineTools.map((function(t){return[t,e.inlineTools.get(t)]})))):t.inlineTools=new E.default(Array.isArray(this.config.inlineToolbar)?this.config.inlineToolbar.map((function(t){return[t,e.inlineTools.get(t)]})):Array.from(this.inlineTools.entries())))}},{key:"assignBlockTunesToBlockTool",value:function(t){var e=this;if(!1!==t.enabledBlockTunes)if(Array.isArray(t.enabledBlockTunes)){var n=new E.default(t.enabledBlockTunes.map((function(t){return[t,e.blockTunes.get(t)]})));t.tunes=new E.default([].concat((0,r.default)(n),(0,r.default)(this.blockTunes.internalTools)))}else if(Array.isArray(this.config.tunes)){var o=new E.default(this.config.tunes.map((function(t){return[t,e.blockTunes.get(t)]})));t.tunes=new E.default([].concat((0,r.default)(o),(0,r.default)(this.blockTunes.internalTools)))}else t.tunes=this.blockTunes.internalTools}},{key:"validateTools",value:function(){for(var t in this.config.tools)if(Object.prototype.hasOwnProperty.call(this.config.tools,t)){if(t in this.internalTools)return;var e=this.config.tools[t];if(!g.isFunction(e)&&!g.isFunction(e.class))throw Error("Tool «".concat(t,"» must be a constructor function or an object with function in the «class» property"))}}},{key:"prepareConfig",value:function(){var t={};for(var e in this.config.tools)g.isObject(this.config.tools[e])?t[e]=this.config.tools[e]:t[e]={class:this.config.tools[e]};return t}},{key:"available",get:function(){return this.toolsAvailable}},{key:"unavailable",get:function(){return this.toolsUnavailable}},{key:"inlineTools",get:function(){return this.available.inlineTools}},{key:"blockTools",get:function(){return this.available.blockTools}},{key:"blockTunes",get:function(){return this.available.blockTunes}},{key:"defaultTool",get:function(){return this.blockTools.get(this.config.defaultBlock)}},{key:"internal",get:function(){return this.available.internalTools}},{key:"internalTools",get:function(){return{bold:{class:y.default,isInternal:!0},italic:{class:b.default,isInternal:!0},link:{class:m.default,isInternal:!0},paragraph:{class:h.default,inlineToolbar:!0,isInternal:!0},stub:{class:k.default,isInternal:!0},moveUp:{class:T.default,isInternal:!0},delete:{class:S.default,isInternal:!0},moveDown:{class:w.default,isInternal:!0}}}}]),p}(v.default);o.default=O,O.displayName="Tools",I([g.cacheable],O.prototype,"getAllInlineToolsSanitizeConfig",null),t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(30),n(2),n(3),n(5),n(6),n(4),n(153)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u){"use strict";var f=n(1);function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=f(r),i=f(i),a=f(a),s=f(s),l=f(l),c=f(c);var p=function(t){(0,s.default)(o,t);var e,n=(e=o,function(){var t,n=(0,c.default)(e);if(d()){var o=(0,c.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,l.default)(this,t)});function o(){return(0,i.default)(this,o),n.apply(this,arguments)}return(0,a.default)(o,[{key:"blockTools",get:function(){return new o(Array.from(this.entries()).filter((function(t){return(0,r.default)(t,2)[1].isBlock()})))}},{key:"inlineTools",get:function(){return new o(Array.from(this.entries()).filter((function(t){return(0,r.default)(t,2)[1].isInline()})))}},{key:"blockTunes",get:function(){return new o(Array.from(this.entries()).filter((function(t){return(0,r.default)(t,2)[1].isTune()})))}},{key:"internalTools",get:function(){return new o(Array.from(this.entries()).filter((function(t){return(0,r.default)(t,2)[1].isInternal})))}},{key:"externalTools",get:function(){return new o(Array.from(this.entries()).filter((function(t){return!(0,r.default)(t,2)[1].isInternal})))}}]),o}((0,(u=f(u)).default)(Map));o.default=p,p.displayName="ToolsCollection",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(30),n(42),n(20),n(21),n(2),n(3),n(5),n(6),n(4),n(401),n(9),n(14),n(7),n(25),n(61),n(62)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d,p,h,v,g,y,b,m){"use strict";var k=n(8),x=n(1);function w(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=x(r),i=x(i),a=x(a),s=x(s),l=x(l),c=x(c),u=x(u),f=x(f),d=x(d),p=x(p),h=x(h),v=x(v),g=k(g),y=x(y),b=x(b),m=x(m);var S=function(t){(0,u.default)(k,t);var e,o,h=(e=k,function(){var t,n=(0,d.default)(e);if(w()){var o=(0,d.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,f.default)(this,t)});function k(){var t;return(0,l.default)(this,k),(t=h.apply(this,arguments)).isMobile=!1,t.contentRectCache=void 0,t.resizeDebouncer=g.debounce((function(){t.windowResize()}),200),t}return(0,c.default)(k,[{key:"addLoader",value:function(){this.nodes.loader=v.default.make("div",this.CSS.editorLoader),this.nodes.wrapper.prepend(this.nodes.loader),this.nodes.redactor.classList.add(this.CSS.editorZoneHidden)}},{key:"removeLoader",value:function(){this.nodes.loader.remove(),this.nodes.redactor.classList.remove(this.CSS.editorZoneHidden)}},{key:"prepare",value:(o=(0,s.default)(a.default.mark((function t(){return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.checkIsMobile(),this.make(),this.addLoader(),this.appendSVGSprite(),this.loadStyles();case 5:case"end":return t.stop()}}),t,this)}))),function(){return o.apply(this,arguments)})},{key:"toggleReadOnly",value:function(t){t?this.disableModuleBindings():this.enableModuleBindings()}},{key:"checkEmptiness",value:function(){var t=this.Editor.BlockManager;this.nodes.wrapper.classList.toggle(this.CSS.editorEmpty,t.isEditorEmpty)}},{key:"destroy",value:function(){this.nodes.holder.innerHTML=""}},{key:"closeAllToolbars",value:function(){var t=this.Editor,e=t.Toolbar,n=t.BlockSettings,o=t.InlineToolbar,r=t.ConversionToolbar;n.close(),o.close(),r.close(),e.toolbox.close()}},{key:"checkIsMobile",value:function(){this.isMobile=window.innerWidth<650}},{key:"make",value:function(){this.nodes.holder=v.default.getHolder(this.config.holder),this.nodes.wrapper=v.default.make("div",[this.CSS.editorWrapper].concat((0,i.default)(this.isRtl?[this.CSS.editorRtlFix]:[]))),this.nodes.redactor=v.default.make("div",this.CSS.editorZone),this.nodes.holder.offsetWidth=0;if(o.anyBlockSelected&&!y.default.isSelectionExists)return o.clearSelection(t),t.preventDefault(),t.stopImmediatePropagation(),void t.stopPropagation();if(!this.someToolbarOpened&&r&&"BODY"===t.target.tagName){var i=this.Editor.BlockManager.insert();this.Editor.Caret.setToBlock(i),this.Editor.BlockManager.highlightCurrentNode(),this.Editor.Toolbar.moveAndOpen(i)}this.Editor.BlockSelection.clearSelection(t)}},{key:"documentClicked",value:function(t){if(t.isTrusted){var e=t.target;this.nodes.holder.contains(e)||y.default.isAtEditor||(this.Editor.BlockManager.dropPointer(),this.Editor.Toolbar.close());var n=this.Editor.BlockSettings.nodes.wrapper.contains(e),o=this.Editor.Toolbar.nodes.settingsToggler.contains(e),r=n||o;if(this.Editor.BlockSettings.opened&&!r){this.Editor.BlockSettings.close();var i=this.Editor.BlockManager.getBlockByChildNode(e);this.Editor.Toolbar.moveAndOpen(i)}this.Editor.BlockSelection.clearSelection(t)}}},{key:"documentTouched",value:function(t){var e=t.target;if(e===this.nodes.redactor){var n=t instanceof MouseEvent?t.clientX:t.touches[0].clientX,o=t instanceof MouseEvent?t.clientY:t.touches[0].clientY;e=document.elementFromPoint(n,o)}try{this.Editor.BlockManager.setCurrentBlockByChildNode(e),this.Editor.BlockManager.highlightCurrentNode()}catch(t){this.Editor.RectangleSelection.isRectActivated()||this.Editor.Caret.setToTheLastBlock()}this.Editor.Toolbar.moveAndOpen()}},{key:"redactorClicked",value:function(t){var e=this.Editor.BlockSelection;if(y.default.isCollapsed){var n=function(){t.stopImmediatePropagation(),t.stopPropagation()},o=t.target,r=t.metaKey||t.ctrlKey;if(v.default.isAnchor(o)&&r){n();var i=o.getAttribute("href"),a=g.getValidUrl(i);g.openTab(a)}else{var s=this.Editor.BlockManager.getBlockByIndex(-1),l=v.default.offset(s.holder).bottom,c=t.pageY;if(t.target instanceof Element&&t.target.isEqualNode(this.nodes.redactor)&&!e.anyBlockSelected&&lr;)Z(t,n=o[r++],e[n]);return t},J=function(t){var e=j.call(this,t=w(t,!0));return!(this===z&&r(H,t)&&!r(U,t))&&(!(e||!r(this,t)||!r(H,t)||r(this,P)&&this[P][t])||e)},$=function(t,e){if(t=x(t),e=w(e,!0),t!==z||!r(H,e)||r(U,e)){var n=O(t,e);return!n||!r(H,e)||r(t,P)&&t[P][e]||(n.enumerable=!0),n}},Q=function(t){for(var e,n=R(x(t)),o=[],i=0;n.length>i;)r(H,e=n[i++])||e==P||e==l||o.push(e);return o},tt=function(t){for(var e,n=t===z,o=R(n?U:x(t)),i=[],a=0;o.length>a;)!r(H,e=o[a++])||n&&!r(z,e)||i.push(H[e]);return i};W||(s((A=function(){if(this instanceof A)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0),e=function(n){this===z&&e.call(U,n),r(this,P)&&r(this[P],t)&&(this[P][t]=!1),X(this,t,S(1,n))};return i&&V&&X(z,t,{configurable:!0,set:e}),K(t)}).prototype,"toString",(function(){return this._k})),B.f=$,_.f=Z,n(49).f=E.f=Q,n(64).f=J,C.f=tt,i&&!n(45)&&s(z,"propertyIsEnumerable",J,!0),h.f=function(t){return K(p(t))}),a(a.G+a.W+a.F*!W,{Symbol:A});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)p(et[nt++]);for(var ot=I(p.store),rt=0;ot.length>rt;)v(ot[rt++]);a(a.S+a.F*!W,"Symbol",{for:function(t){return r(F,t+="")?F[t]:F[t]=A(t)},keyFor:function(t){if(!G(t))throw TypeError(t+" is not a symbol!");for(var e in F)if(F[e]===t)return e},useSetter:function(){V=!0},useSimple:function(){V=!1}}),a(a.S+a.F*!W,"Object",{create:function(t,e){return void 0===e?T(t):q(T(t),e)},defineProperty:Z,defineProperties:q,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:tt});var it=c((function(){C.f(1)}));a(a.S+a.F*it,"Object",{getOwnPropertySymbols:function(t){return C.f(k(t))}}),N&&a(a.S+a.F*(!W||c((function(){var t=A();return"[null]"!=L([t])||"{}"!=L({a:t})||"{}"!=L(Object(t))}))),"JSON",{stringify:function(t){for(var e,n,o=[t],r=1;arguments.length>r;)o.push(arguments[r++]);if(n=e=o[1],(m(e)||void 0!==t)&&!G(t))return y(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!G(e))return e}),o[1]=e,L.apply(N,o)}}),A.prototype[D]||n(27)(A.prototype,D,A.prototype.valueOf),f(A,"Symbol"),f(Math,"Math",!0),f(o.JSON,"JSON",!0)},function(t,e,n){t.exports=n(69)("native-function-to-string",Function.toString)},function(t,e,n){var o=n(46),r=n(71),i=n(64);t.exports=function(t){var e=o(t),n=r.f;if(n)for(var a,s=n(t),l=i.f,c=0;s.length>c;)l.call(t,a=s[c++])&&e.push(a);return e}},function(t,e,n){var o=n(0);o(o.S,"Object",{create:n(48)})},function(t,e,n){var o=n(0);o(o.S+o.F*!n(18),"Object",{defineProperty:n(19).f})},function(t,e,n){var o=n(0);o(o.S+o.F*!n(18),"Object",{defineProperties:n(119)})},function(t,e,n){var o=n(28),r=n(34).f;n(35)("getOwnPropertyDescriptor",(function(){return function(t,e){return r(o(t),e)}}))},function(t,e,n){var o=n(22),r=n(50);n(35)("getPrototypeOf",(function(){return function(t){return r(o(t))}}))},function(t,e,n){var o=n(22),r=n(46);n(35)("keys",(function(){return function(t){return r(o(t))}}))},function(t,e,n){n(35)("getOwnPropertyNames",(function(){return n(120).f}))},function(t,e,n){var o=n(13),r=n(41).onFreeze;n(35)("freeze",(function(t){return function(e){return t&&o(e)?t(r(e)):e}}))},function(t,e,n){var o=n(13),r=n(41).onFreeze;n(35)("seal",(function(t){return function(e){return t&&o(e)?t(r(e)):e}}))},function(t,e,n){var o=n(13),r=n(41).onFreeze;n(35)("preventExtensions",(function(t){return function(e){return t&&o(e)?t(r(e)):e}}))},function(t,e,n){var o=n(13);n(35)("isFrozen",(function(t){return function(e){return!o(e)||!!t&&t(e)}}))},function(t,e,n){var o=n(13);n(35)("isSealed",(function(t){return function(e){return!o(e)||!!t&&t(e)}}))},function(t,e,n){var o=n(13);n(35)("isExtensible",(function(t){return function(e){return!!o(e)&&(!t||t(e))}}))},function(t,e,n){var o=n(0);o(o.S+o.F,"Object",{assign:n(121)})},function(t,e,n){var o=n(0);o(o.S,"Object",{is:n(122)})},function(t,e,n){var o=n(0);o(o.S,"Object",{setPrototypeOf:n(90).set})},function(t,e,n){"use strict";var o=n(65),r={};r[n(15)("toStringTag")]="z",r+""!="[object z]"&&n(23)(Object.prototype,"toString",(function(){return"[object "+o(this)+"]"}),!0)},function(t,e,n){var o=n(0);o(o.P,"Function",{bind:n(123)})},function(t,e,n){var o=n(19).f,r=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in r||n(18)&&o(r,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},function(t,e,n){"use strict";var o=n(13),r=n(50),i=n(15)("hasInstance"),a=Function.prototype;i in a||n(19).f(a,i,{value:function(t){if("function"!=typeof this||!o(t))return!1;if(!o(this.prototype))return t instanceof this;for(;t=r(t);)if(this.prototype===t)return!0;return!1}})},function(t,e,n){var o=n(0),r=n(125);o(o.G+o.F*(parseInt!=r),{parseInt:r})},function(t,e,n){var o=n(0),r=n(126);o(o.G+o.F*(parseFloat!=r),{parseFloat:r})},function(t,e,n){"use strict";var o=n(10),r=n(26),i=n(37),a=n(92),s=n(40),l=n(11),c=n(49).f,u=n(34).f,f=n(19).f,d=n(54).trim,p=o.Number,h=p,v=p.prototype,g="Number"==i(n(48)(v)),y="trim"in String.prototype,b=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var n,o,r,i=(e=y?e.trim():d(e,3)).charCodeAt(0);if(43===i||45===i){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:o=2,r=49;break;case 79:case 111:o=8,r=55;break;default:return+e}for(var a,l=e.slice(2),c=0,u=l.length;cr)return NaN;return parseInt(l,o)}}return+e};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof p&&(g?l((function(){v.valueOf.call(n)})):"Number"!=i(n))?a(new h(b(e)),n,p):b(e)};for(var m,k=n(18)?c(h):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),x=0;k.length>x;x++)r(h,m=k[x])&&!r(p,m)&&f(p,m,u(h,m));p.prototype=v,v.constructor=p,n(23)(o,"Number",p)}},function(t,e,n){"use strict";var o=n(0),r=n(33),i=n(127),a=n(93),s=1..toFixed,l=Math.floor,c=[0,0,0,0,0,0],u="Number.toFixed: incorrect invocation!",f=function(t,e){for(var n=-1,o=e;++n<6;)o+=t*c[n],c[n]=o%1e7,o=l(o/1e7)},d=function(t){for(var e=6,n=0;--e>=0;)n+=c[e],c[e]=l(n/t),n=n%t*1e7},p=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==c[t]){var n=String(c[t]);e=""===e?n:e+a.call("0",7-n.length)+n}return e},h=function(t,e,n){return 0===e?n:e%2==1?h(t,e-1,n*t):h(t*t,e/2,n)};o(o.P+o.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n(11)((function(){s.call({})}))),"Number",{toFixed:function(t){var e,n,o,s,l=i(this,u),c=r(t),v="",g="0";if(c<0||c>20)throw RangeError(u);if(l!=l)return"NaN";if(l<=-1e21||l>=1e21)return String(l);if(l<0&&(v="-",l=-l),l>1e-21)if(n=(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(l*h(2,69,1))-69)<0?l*h(2,-e,1):l/h(2,e,1),n*=4503599627370496,(e=52-e)>0){for(f(0,n),o=c;o>=7;)f(1e7,0),o-=7;for(f(h(10,o,1),0),o=e-1;o>=23;)d(1<<23),o-=23;d(1<0?v+((s=g.length)<=c?"0."+a.call("0",c-s)+g:g.slice(0,s-c)+"."+g.slice(s-c)):v+g}})},function(t,e,n){"use strict";var o=n(0),r=n(11),i=n(127),a=1..toPrecision;o(o.P+o.F*(r((function(){return"1"!==a.call(1,void 0)}))||!r((function(){a.call({})}))),"Number",{toPrecision:function(t){var e=i(this,"Number#toPrecision: incorrect invocation!");return void 0===t?a.call(e):a.call(e,t)}})},function(t,e,n){var o=n(0);o(o.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,e,n){var o=n(0),r=n(10).isFinite;o(o.S,"Number",{isFinite:function(t){return"number"==typeof t&&r(t)}})},function(t,e,n){var o=n(0);o(o.S,"Number",{isInteger:n(128)})},function(t,e,n){var o=n(0);o(o.S,"Number",{isNaN:function(t){return t!=t}})},function(t,e,n){var o=n(0),r=n(128),i=Math.abs;o(o.S,"Number",{isSafeInteger:function(t){return r(t)&&i(t)<=9007199254740991}})},function(t,e,n){var o=n(0);o(o.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,n){var o=n(0);o(o.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,e,n){var o=n(0),r=n(126);o(o.S+o.F*(Number.parseFloat!=r),"Number",{parseFloat:r})},function(t,e,n){var o=n(0),r=n(125);o(o.S+o.F*(Number.parseInt!=r),"Number",{parseInt:r})},function(t,e,n){var o=n(0),r=n(129),i=Math.sqrt,a=Math.acosh;o(o.S+o.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:r(t-1+i(t-1)*i(t+1))}})},function(t,e,n){var o=n(0),r=Math.asinh;o(o.S+o.F*!(r&&1/r(0)>0),"Math",{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Math.log(e+Math.sqrt(e*e+1)):e}})},function(t,e,n){var o=n(0),r=Math.atanh;o(o.S+o.F*!(r&&1/r(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,e,n){var o=n(0),r=n(94);o(o.S,"Math",{cbrt:function(t){return r(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,e,n){var o=n(0);o(o.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,e,n){var o=n(0),r=Math.exp;o(o.S,"Math",{cosh:function(t){return(r(t=+t)+r(-t))/2}})},function(t,e,n){var o=n(0),r=n(95);o(o.S+o.F*(r!=Math.expm1),"Math",{expm1:r})},function(t,e,n){var o=n(0);o(o.S,"Math",{fround:n(236)})},function(t,e,n){var o=n(94),r=Math.pow,i=r(2,-52),a=r(2,-23),s=r(2,127)*(2-a),l=r(2,-126);t.exports=Math.fround||function(t){var e,n,r=Math.abs(t),c=o(t);return rs||n!=n?c*(1/0):c*n}},function(t,e,n){var o=n(0),r=Math.abs;o(o.S,"Math",{hypot:function(t,e){for(var n,o,i=0,a=0,s=arguments.length,l=0;a0?(o=n/l)*o:n;return l===1/0?1/0:l*Math.sqrt(i)}})},function(t,e,n){var o=n(0),r=Math.imul;o(o.S+o.F*n(11)((function(){return-5!=r(4294967295,5)||2!=r.length})),"Math",{imul:function(t,e){var n=+t,o=+e,r=65535&n,i=65535&o;return 0|r*i+((65535&n>>>16)*i+r*(65535&o>>>16)<<16>>>0)}})},function(t,e,n){var o=n(0);o(o.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},function(t,e,n){var o=n(0);o(o.S,"Math",{log1p:n(129)})},function(t,e,n){var o=n(0);o(o.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,e,n){var o=n(0);o(o.S,"Math",{sign:n(94)})},function(t,e,n){var o=n(0),r=n(95),i=Math.exp;o(o.S+o.F*n(11)((function(){return-2e-17!=!Math.sinh(-2e-17)})),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(r(t)-r(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},function(t,e,n){var o=n(0),r=n(95),i=Math.exp;o(o.S,"Math",{tanh:function(t){var e=r(t=+t),n=r(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},function(t,e,n){var o=n(0);o(o.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,n){var o=n(0),r=n(47),i=String.fromCharCode,a=String.fromCodePoint;o(o.S+o.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,n=[],o=arguments.length,a=0;o>a;){if(e=+arguments[a++],r(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?i(e):i(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},function(t,e,n){var o=n(0),r=n(28),i=n(16);o(o.S,"String",{raw:function(t){for(var e=r(t.raw),n=i(e.length),o=arguments.length,a=[],s=0;n>s;)a.push(String(e[s++])),s=e.length?{value:void 0,done:!0}:(t=o(e,n),this._i+=t.length,{value:t,done:!1})}))},function(t,e,n){"use strict";var o=n(0),r=n(96)(!1);o(o.P,"String",{codePointAt:function(t){return r(this,t)}})},function(t,e,n){"use strict";var o=n(0),r=n(16),i=n(98),a="".endsWith;o(o.P+o.F*n(100)("endsWith"),"String",{endsWith:function(t){var e=i(this,t,"endsWith"),n=arguments.length>1?arguments[1]:void 0,o=r(e.length),s=void 0===n?o:Math.min(r(n),o),l=String(t);return a?a.call(e,l,s):e.slice(s-l.length,s)===l}})},function(t,e,n){"use strict";var o=n(0),r=n(98);o(o.P+o.F*n(100)("includes"),"String",{includes:function(t){return!!~r(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var o=n(0);o(o.P,"String",{repeat:n(93)})},function(t,e,n){"use strict";var o=n(0),r=n(16),i=n(98),a="".startsWith;o(o.P+o.F*n(100)("startsWith"),"String",{startsWith:function(t){var e=i(this,t,"startsWith"),n=r(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),o=String(t);return a?a.call(e,o,n):e.slice(n,n+o.length)===o}})},function(t,e,n){"use strict";n(24)("anchor",(function(t){return function(e){return t(this,"a","name",e)}}))},function(t,e,n){"use strict";n(24)("big",(function(t){return function(){return t(this,"big","","")}}))},function(t,e,n){"use strict";n(24)("blink",(function(t){return function(){return t(this,"blink","","")}}))},function(t,e,n){"use strict";n(24)("bold",(function(t){return function(){return t(this,"b","","")}}))},function(t,e,n){"use strict";n(24)("fixed",(function(t){return function(){return t(this,"tt","","")}}))},function(t,e,n){"use strict";n(24)("fontcolor",(function(t){return function(e){return t(this,"font","color",e)}}))},function(t,e,n){"use strict";n(24)("fontsize",(function(t){return function(e){return t(this,"font","size",e)}}))},function(t,e,n){"use strict";n(24)("italics",(function(t){return function(){return t(this,"i","","")}}))},function(t,e,n){"use strict";n(24)("link",(function(t){return function(e){return t(this,"a","href",e)}}))},function(t,e,n){"use strict";n(24)("small",(function(t){return function(){return t(this,"small","","")}}))},function(t,e,n){"use strict";n(24)("strike",(function(t){return function(){return t(this,"strike","","")}}))},function(t,e,n){"use strict";n(24)("sub",(function(t){return function(){return t(this,"sub","","")}}))},function(t,e,n){"use strict";n(24)("sup",(function(t){return function(){return t(this,"sup","","")}}))},function(t,e,n){var o=n(0);o(o.S,"Date",{now:function(){return(new Date).getTime()}})},function(t,e,n){"use strict";var o=n(0),r=n(22),i=n(40);o(o.P+o.F*n(11)((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(t){var e=r(this),n=i(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},function(t,e,n){var o=n(0),r=n(271);o(o.P+o.F*(Date.prototype.toISOString!==r),"Date",{toISOString:r})},function(t,e,n){"use strict";var o=n(11),r=Date.prototype.getTime,i=Date.prototype.toISOString,a=function(t){return t>9?t:"0"+t};t.exports=o((function(){return"0385-07-25T07:06:39.999Z"!=i.call(new Date(-50000000000001))}))||!o((function(){i.call(new Date(NaN))}))?function(){if(!isFinite(r.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),o=e<0?"-":e>9999?"+":"";return o+("00000"+Math.abs(e)).slice(o?-6:-4)+"-"+a(t.getUTCMonth()+1)+"-"+a(t.getUTCDate())+"T"+a(t.getUTCHours())+":"+a(t.getUTCMinutes())+":"+a(t.getUTCSeconds())+"."+(n>99?n:"0"+a(n))+"Z"}:i},function(t,e,n){var o=Date.prototype,r=o.toString,i=o.getTime;new Date(NaN)+""!="Invalid Date"&&n(23)(o,"toString",(function(){var t=i.call(this);return t==t?r.call(this):"Invalid Date"}))},function(t,e,n){var o=n(15)("toPrimitive"),r=Date.prototype;o in r||n(27)(r,o,n(274))},function(t,e,n){"use strict";var o=n(12),r=n(40);t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return r(o(this),"number"!=t)}},function(t,e,n){var o=n(0);o(o.S,"Array",{isArray:n(72)})},function(t,e,n){"use strict";var o=n(31),r=n(0),i=n(22),a=n(131),s=n(101),l=n(16),c=n(102),u=n(103);r(r.S+r.F*!n(73)((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,r,f,d=i(t),p="function"==typeof this?this:Array,h=arguments.length,v=h>1?arguments[1]:void 0,g=void 0!==v,y=0,b=u(d);if(g&&(v=o(v,h>2?arguments[2]:void 0,2)),null==b||p==Array&&s(b))for(n=new p(e=l(d.length));e>y;y++)c(n,y,g?v(d[y],y):d[y]);else for(f=b.call(d),n=new p;!(r=f.next()).done;y++)c(n,y,g?a(f,v,[r.value,y],!0):r.value);return n.length=y,n}})},function(t,e,n){"use strict";var o=n(0),r=n(102);o(o.S+o.F*n(11)((function(){function t(){}return!(Array.of.call(t)instanceof t)})),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)r(n,t,arguments[t++]);return n.length=e,n}})},function(t,e,n){"use strict";var o=n(0),r=n(28),i=[].join;o(o.P+o.F*(n(63)!=Object||!n(29)(i)),"Array",{join:function(t){return i.call(r(this),void 0===t?",":t)}})},function(t,e,n){"use strict";var o=n(0),r=n(89),i=n(37),a=n(47),s=n(16),l=[].slice;o(o.P+o.F*n(11)((function(){r&&l.call(r)})),"Array",{slice:function(t,e){var n=s(this.length),o=i(this);if(e=void 0===e?n:e,"Array"==o)return l.call(this,t,e);for(var r=a(t,n),c=a(e,n),u=s(c-r),f=new Array(u),d=0;d1&&(o=Math.min(o,i(arguments[1]))),o<0&&(o=n+o);o>=0;o--)if(o in e&&e[o]===t)return o||0;return-1}})},function(t,e,n){var o=n(0);o(o.P,"Array",{copyWithin:n(134)}),n(51)("copyWithin")},function(t,e,n){var o=n(0);o(o.P,"Array",{fill:n(104)}),n(51)("fill")},function(t,e,n){"use strict";var o=n(0),r=n(36)(5),i=!0;"find"in[]&&Array(1).find((function(){i=!1})),o(o.P+o.F*i,"Array",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),n(51)("find")},function(t,e,n){"use strict";var o=n(0),r=n(36)(6),i="findIndex",a=!0;i in[]&&Array(1)[i]((function(){a=!1})),o(o.P+o.F*a,"Array",{findIndex:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),n(51)(i)},function(t,e,n){n(56)("Array")},function(t,e,n){var o=n(10),r=n(92),i=n(19).f,a=n(49).f,s=n(99),l=n(74),c=o.RegExp,u=c,f=c.prototype,d=/a/g,p=/a/g,h=new c(d)!==d;if(n(18)&&(!h||n(11)((function(){return p[n(15)("match")]=!1,c(d)!=d||c(p)==p||"/a/i"!=c(d,"i")})))){c=function(t,e){var n=this instanceof c,o=s(t),i=void 0===e;return!n&&o&&t.constructor===c&&i?t:r(h?new u(o&&!i?t.source:t,e):u((o=t instanceof c)?t.source:t,o&&i?l.call(t):e),n?this:f,c)};for(var v=function(t){t in c||i(c,t,{configurable:!0,get:function(){return u[t]},set:function(e){u[t]=e}})},g=a(u),y=0;g.length>y;)v(g[y++]);f.constructor=c,c.prototype=f,n(23)(o,"RegExp",c)}n(56)("RegExp")},function(t,e,n){"use strict";n(137);var o=n(12),r=n(74),i=n(18),a=/./.toString,s=function(t){n(23)(RegExp.prototype,"toString",t,!0)};n(11)((function(){return"/a/b"!=a.call({source:"a",flags:"b"})}))?s((function(){var t=o(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?r.call(t):void 0)})):"toString"!=a.name&&s((function(){return a.call(this)}))},function(t,e,n){"use strict";var o=n(12),r=n(16),i=n(107),a=n(75);n(76)("match",1,(function(t,e,n,s){return[function(n){var o=t(this),r=null==n?void 0:n[e];return void 0!==r?r.call(n,o):new RegExp(n)[e](String(o))},function(t){var e=s(n,t,this);if(e.done)return e.value;var l=o(t),c=String(this);if(!l.global)return a(l,c);var u=l.unicode;l.lastIndex=0;for(var f,d=[],p=0;null!==(f=a(l,c));){var h=String(f[0]);d[p]=h,""===h&&(l.lastIndex=i(c,r(l.lastIndex),u)),p++}return 0===p?null:d}]}))},function(t,e,n){"use strict";var o=n(12),r=n(22),i=n(16),a=n(33),s=n(107),l=n(75),c=Math.max,u=Math.min,f=Math.floor,d=/\$([$&`']|\d\d?|<[^>]*>)/g,p=/\$([$&`']|\d\d?)/g;n(76)("replace",2,(function(t,e,n,h){return[function(o,r){var i=t(this),a=null==o?void 0:o[e];return void 0!==a?a.call(o,i,r):n.call(String(i),o,r)},function(t,e){var r=h(n,t,this,e);if(r.done)return r.value;var f=o(t),d=String(this),p="function"==typeof e;p||(e=String(e));var g=f.global;if(g){var y=f.unicode;f.lastIndex=0}for(var b=[];;){var m=l(f,d);if(null===m)break;if(b.push(m),!g)break;""===String(m[0])&&(f.lastIndex=s(d,i(f.lastIndex),y))}for(var k,x="",w=0,S=0;S=w&&(x+=d.slice(w,E)+O,w=E+T.length)}return x+d.slice(w)}];function v(t,e,o,i,a,s){var l=o+t.length,c=i.length,u=p;return void 0!==a&&(a=r(a),u=d),n.call(s,u,(function(n,r){var s;switch(r.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,o);case"'":return e.slice(l);case"<":s=a[r.slice(1,-1)];break;default:var u=+r;if(0===u)return n;if(u>c){var d=f(u/10);return 0===d?n:d<=c?void 0===i[d-1]?r.charAt(1):i[d-1]+r.charAt(1):n}s=i[u-1]}return void 0===s?"":s}))}}))},function(t,e,n){"use strict";var o=n(12),r=n(122),i=n(75);n(76)("search",1,(function(t,e,n,a){return[function(n){var o=t(this),r=null==n?void 0:n[e];return void 0!==r?r.call(n,o):new RegExp(n)[e](String(o))},function(t){var e=a(n,t,this);if(e.done)return e.value;var s=o(t),l=String(this),c=s.lastIndex;r(c,0)||(s.lastIndex=0);var u=i(s,l);return r(s.lastIndex,c)||(s.lastIndex=c),null===u?-1:u.index}]}))},function(t,e,n){"use strict";var o=n(99),r=n(12),i=n(66),a=n(107),s=n(16),l=n(75),c=n(106),u=n(11),f=Math.min,d=[].push,p="length",h=!u((function(){RegExp(4294967295,"y")}));n(76)("split",2,(function(t,e,n,u){var v;return v="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1)[p]||2!="ab".split(/(?:ab)*/)[p]||4!=".".split(/(.?)(.?)/)[p]||".".split(/()()/)[p]>1||"".split(/.?/)[p]?function(t,e){var r=String(this);if(void 0===t&&0===e)return[];if(!o(t))return n.call(r,t,e);for(var i,a,s,l=[],u=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),f=0,h=void 0===e?4294967295:e>>>0,v=new RegExp(t.source,u+"g");(i=c.call(v,r))&&!((a=v.lastIndex)>f&&(l.push(r.slice(f,i.index)),i[p]>1&&i.index=h));)v.lastIndex===i.index&&v.lastIndex++;return f===r[p]?!s&&v.test("")||l.push(""):l.push(r.slice(f)),l[p]>h?l.slice(0,h):l}:"0".split(void 0,0)[p]?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,o){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r,o):v.call(String(r),n,o)},function(t,e){var o=u(v,t,this,e,v!==n);if(o.done)return o.value;var c=r(t),d=String(this),p=i(c,RegExp),g=c.unicode,y=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(h?"y":"g"),b=new p(h?c:"^(?:"+c.source+")",y),m=void 0===e?4294967295:e>>>0;if(0===m)return[];if(0===d.length)return null===l(b,d)?[d]:[];for(var k=0,x=0,w=[];x0?arguments[0]:void 0)}}),{get:function(t){var e=o.getEntry(r(this,"Map"),t);return e&&e.v},set:function(t,e){return o.def(r(this,"Map"),0===t?0:t,e)}},o,!0)},function(t,e,n){"use strict";var o=n(141),r=n(52);t.exports=n(79)("Set",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return o.def(r(this,"Set"),t=0===t?0:t,t)}},o)},function(t,e,n){"use strict";var o,r=n(10),i=n(36)(0),a=n(23),s=n(41),l=n(121),c=n(142),u=n(13),f=n(52),d=n(52),p=!r.ActiveXObject&&"ActiveXObject"in r,h=s.getWeak,v=Object.isExtensible,g=c.ufstore,y=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(u(t)){var e=h(t);return!0===e?g(f(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return c.def(f(this,"WeakMap"),t,e)}},m=t.exports=n(79)("WeakMap",y,b,c,!0,!0);d&&p&&(l((o=c.getConstructor(y,"WeakMap")).prototype,b),s.NEED=!0,i(["delete","has","get","set"],(function(t){var e=m.prototype,n=e[t];a(e,t,(function(e,r){if(u(e)&&!v(e)){this._f||(this._f=new o);var i=this._f[t](e,r);return"set"==t?this:i}return n.call(this,e,r)}))})))},function(t,e,n){"use strict";var o=n(142),r=n(52);n(79)("WeakSet",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return o.def(r(this,"WeakSet"),t,!0)}},o,!1,!0)},function(t,e,n){"use strict";var o=n(0),r=n(80),i=n(109),a=n(12),s=n(47),l=n(16),c=n(13),u=n(10).ArrayBuffer,f=n(66),d=i.ArrayBuffer,p=i.DataView,h=r.ABV&&u.isView,v=d.prototype.slice,g=r.VIEW;o(o.G+o.W+o.F*(u!==d),{ArrayBuffer:d}),o(o.S+o.F*!r.CONSTR,"ArrayBuffer",{isView:function(t){return h&&h(t)||c(t)&&g in t}}),o(o.P+o.U+o.F*n(11)((function(){return!new d(2).slice(1,void 0).byteLength})),"ArrayBuffer",{slice:function(t,e){if(void 0!==v&&void 0===e)return v.call(a(this),t);for(var n=a(this).byteLength,o=s(t,n),r=s(void 0===e?n:e,n),i=new(f(this,d))(l(r-o)),c=new p(this),u=new p(i),h=0;o=e.length)return{value:void 0,done:!0}}while(!((t=e[this._i++])in this._t));return{value:t,done:!1}})),o(o.S,"Reflect",{enumerate:function(t){return new i(t)}})},function(t,e,n){var o=n(34),r=n(50),i=n(26),a=n(0),s=n(13),l=n(12);a(a.S,"Reflect",{get:function t(e,n){var a,c,u=arguments.length<3?e:arguments[2];return l(e)===u?e[n]:(a=o.f(e,n))?i(a,"value")?a.value:void 0!==a.get?a.get.call(u):void 0:s(c=r(e))?t(c,n,u):void 0}})},function(t,e,n){var o=n(34),r=n(0),i=n(12);r(r.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return o.f(i(t),e)}})},function(t,e,n){var o=n(0),r=n(50),i=n(12);o(o.S,"Reflect",{getPrototypeOf:function(t){return r(i(t))}})},function(t,e,n){var o=n(0);o(o.S,"Reflect",{has:function(t,e){return e in t}})},function(t,e,n){var o=n(0),r=n(12),i=Object.isExtensible;o(o.S,"Reflect",{isExtensible:function(t){return r(t),!i||i(t)}})},function(t,e,n){var o=n(0);o(o.S,"Reflect",{ownKeys:n(144)})},function(t,e,n){var o=n(0),r=n(12),i=Object.preventExtensions;o(o.S,"Reflect",{preventExtensions:function(t){r(t);try{return i&&i(t),!0}catch(t){return!1}}})},function(t,e,n){var o=n(19),r=n(34),i=n(50),a=n(26),s=n(0),l=n(43),c=n(12),u=n(13);s(s.S,"Reflect",{set:function t(e,n,s){var f,d,p=arguments.length<4?e:arguments[3],h=r.f(c(e),n);if(!h){if(u(d=i(e)))return t(d,n,s,p);h=l(0)}if(a(h,"value")){if(!1===h.writable||!u(p))return!1;if(f=r.f(p,n)){if(f.get||f.set||!1===f.writable)return!1;f.value=s,o.f(p,n,f)}else o.f(p,n,l(0,s));return!0}return void 0!==h.set&&(h.set.call(p,s),!0)}})},function(t,e,n){var o=n(0),r=n(90);r&&o(o.S,"Reflect",{setPrototypeOf:function(t,e){r.check(t,e);try{return r.set(t,e),!0}catch(t){return!1}}})},function(t,e,n){n(334),t.exports=n(17).Array.includes},function(t,e,n){"use strict";var o=n(0),r=n(70)(!0);o(o.P,"Array",{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),n(51)("includes")},function(t,e,n){n(336),t.exports=n(17).Array.flatMap},function(t,e,n){"use strict";var o=n(0),r=n(337),i=n(22),a=n(16),s=n(32),l=n(132);o(o.P,"Array",{flatMap:function(t){var e,n,o=i(this);return s(t),e=a(o.length),n=l(o,0),r(n,o,o,e,0,1,t,arguments[1]),n}}),n(51)("flatMap")},function(t,e,n){"use strict";var o=n(72),r=n(13),i=n(16),a=n(31),s=n(15)("isConcatSpreadable");t.exports=function t(e,n,l,c,u,f,d,p){for(var h,v,g=u,y=0,b=!!d&&a(d,p,3);y0)g=t(e,n,h,i(h.length),g,f-1)-1;else{if(g>=9007199254740991)throw TypeError();e[g]=h}g++}y++}return g}},function(t,e,n){n(339),t.exports=n(17).String.padStart},function(t,e,n){"use strict";var o=n(0),r=n(145),i=n(78),a=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(i);o(o.P+o.F*a,"String",{padStart:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,e,n){n(341),t.exports=n(17).String.padEnd},function(t,e,n){"use strict";var o=n(0),r=n(145),i=n(78),a=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(i);o(o.P+o.F*a,"String",{padEnd:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},function(t,e,n){n(343),t.exports=n(17).String.trimLeft},function(t,e,n){"use strict";n(54)("trimLeft",(function(t){return function(){return t(this,1)}}),"trimStart")},function(t,e,n){n(345),t.exports=n(17).String.trimRight},function(t,e,n){"use strict";n(54)("trimRight",(function(t){return function(){return t(this,2)}}),"trimEnd")},function(t,e,n){n(347),t.exports=n(86).f("asyncIterator")},function(t,e,n){n(117)("asyncIterator")},function(t,e,n){n(349),t.exports=n(17).Object.getOwnPropertyDescriptors},function(t,e,n){var o=n(0),r=n(144),i=n(28),a=n(34),s=n(102);o(o.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,o=i(t),l=a.f,c=r(o),u={},f=0;c.length>f;)void 0!==(n=l(o,e=c[f++]))&&s(u,e,n);return u}})},function(t,e,n){n(351),t.exports=n(17).Object.values},function(t,e,n){var o=n(0),r=n(146)(!1);o(o.S,"Object",{values:function(t){return r(t)}})},function(t,e,n){n(353),t.exports=n(17).Object.entries},function(t,e,n){var o=n(0),r=n(146)(!0);o(o.S,"Object",{entries:function(t){return r(t)}})},function(t,e,n){"use strict";n(138),n(355),t.exports=n(17).Promise.finally},function(t,e,n){"use strict";var o=n(0),r=n(17),i=n(10),a=n(66),s=n(140);o(o.P+o.R,"Promise",{finally:function(t){var e=a(this,r.Promise||i.Promise),n="function"==typeof t;return this.then(n?function(n){return s(e,t()).then((function(){return n}))}:t,n?function(n){return s(e,t()).then((function(){throw n}))}:t)}})},function(t,e,n){n(357),n(358),n(359),t.exports=n(17)},function(t,e,n){var o=n(10),r=n(0),i=n(78),a=[].slice,s=/MSIE .\./.test(i),l=function(t){return function(e,n){var o=arguments.length>2,r=!!o&&a.call(arguments,2);return t(o?function(){("function"==typeof e?e:Function(e)).apply(this,r)}:e,n)}};r(r.G+r.B+r.F*s,{setTimeout:l(o.setTimeout),setInterval:l(o.setInterval)})},function(t,e,n){var o=n(0),r=n(108);o(o.G+o.B,{setImmediate:r.set,clearImmediate:r.clear})},function(t,e,n){for(var o=n(105),r=n(46),i=n(23),a=n(10),s=n(27),l=n(55),c=n(15),u=c("iterator"),f=c("toStringTag"),d=l.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=r(p),v=0;v=0&&e.item(n)!==this;);return n>-1}),Element.prototype.closest||(Element.prototype.closest=function(t){var e=this;if(!document.documentElement.contains(e))return null;do{if(e.matches(t))return e;e=e.parentElement||e.parentNode}while(null!==e);return null}),Element.prototype.prepend||(Element.prototype.prepend=function(t){var e=document.createDocumentFragment();Array.isArray(t)||(t=[t]),t.forEach((function(t){var n=t instanceof Node;e.appendChild(n?t:document.createTextNode(t))})),this.insertBefore(e,this.firstChild)}),Element.prototype.scrollIntoViewIfNeeded||(Element.prototype.scrollIntoViewIfNeeded=function(t){t=0===arguments.length||!!t;var e=this.parentNode,n=window.getComputedStyle(e,null),o=parseInt(n.getPropertyValue("border-top-width")),r=parseInt(n.getPropertyValue("border-left-width")),i=this.offsetTop-e.offsetTope.scrollTop+e.clientHeight,s=this.offsetLeft-e.offsetLefte.scrollLeft+e.clientWidth,c=i&&!a;(i||a)&&t&&(e.scrollTop=this.offsetTop-e.offsetTop-e.clientHeight/2-o+this.clientHeight/2),(s||l)&&t&&(e.scrollLeft=this.offsetLeft-e.offsetLeft-e.clientWidth/2-r+this.clientWidth/2),(i||a||s||l)&&!t&&this.scrollIntoView(c)})})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(20),n(21),n(2),n(3),n(14),n(7),n(60),n(151),n(81)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c,u,f,d){"use strict";var p=n(8),h=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=h(r),i=h(i),a=h(a),s=h(s),l=h(l),c=p(c),u=h(u),d=h(d);var v=n(375),g=[];v.keys().forEach((function(t){t.match(/^\.\/[^_][\w/]*\.([tj])s$/)&&g.push(v(t))}));var y=function(){function t(e){var n,o,s=this;(0,a.default)(this,t),this.moduleInstances={},this.eventsDispatcher=new d.default,this.isReady=new Promise((function(t,e){n=t,o=e})),Promise.resolve().then((0,i.default)(r.default.mark((function t(){return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s.configuration=e,t.next=3,s.validate();case 3:return t.next=5,s.init();case 5:return t.next=7,s.start();case 7:c.logLabeled("I'm ready! (ノ◕ヮ◕)ノ*:・゚✧","log","","color: #E24A75"),setTimeout((0,i.default)(r.default.mark((function t(){var e,o,i;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.render();case 2:s.configuration.autofocus&&(e=s.moduleInstances,o=e.BlockManager,(i=e.Caret).setToBlock(o.blocks[0],i.positions.START),o.highlightCurrentNode()),s.moduleInstances.UI.removeLoader(),n();case 5:case"end":return t.stop()}}),t)}))),500);case 9:case"end":return t.stop()}}),t)})))).catch((function(t){c.log("Editor.js is not ready because of ".concat(t),"error"),o(t)}))}var e,n;return(0,s.default)(t,[{key:"validate",value:(n=(0,i.default)(r.default.mark((function t(){var e,n,o;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=this.config,n=e.holderId,o=e.holder,!n||!o){t.next=3;break}throw Error("«holderId» and «holder» param can't assign at the same time.");case 3:if(!c.isString(o)||l.default.get(o)){t.next=5;break}throw Error("element with ID «".concat(o,"» is missing. Pass correct holder's ID."));case 5:if(!o||!c.isObject(o)||l.default.isElement(o)){t.next=7;break}throw Error("«holder» value must be an Element node");case 7:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"init",value:function(){this.constructModules(),this.configureModules()}},{key:"start",value:(e=(0,i.default)(r.default.mark((function t(){var e,n=this;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=["Tools","UI","BlockManager","Paste","BlockSelection","RectangleSelection","CrossBlockSelection","ReadOnly"],t.next=3,e.reduce((function(t,e){return t.then((0,i.default)(r.default.mark((function t(){return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,n.moduleInstances[e].prepare();case 3:t.next=10;break;case 5:if(t.prev=5,t.t0=t.catch(0),!(t.t0 instanceof f.CriticalError)){t.next=9;break}throw new Error(t.t0.message);case 9:c.log("Module ".concat(e," was skipped because of %o"),"warn",t.t0);case 10:case"end":return t.stop()}}),t,null,[[0,5]])}))))}),Promise.resolve());case 3:case"end":return t.stop()}}),t)}))),function(){return e.apply(this,arguments)})},{key:"render",value:function(){return this.moduleInstances.Renderer.render(this.config.data.blocks)}},{key:"constructModules",value:function(){var t=this;g.forEach((function(e){var n=c.isFunction(e)?e:e.default;try{t.moduleInstances[n.displayName]=new n({config:t.configuration,eventsDispatcher:t.eventsDispatcher})}catch(t){c.log("Module ".concat(n.displayName," skipped because"),"error",t)}}))}},{key:"configureModules",value:function(){for(var t in this.moduleInstances)Object.prototype.hasOwnProperty.call(this.moduleInstances,t)&&(this.moduleInstances[t].state=this.getModulesDiff(t))}},{key:"getModulesDiff",value:function(t){var e={};for(var n in this.moduleInstances)n!==t&&(e[n]=this.moduleInstances[n]);return e}},{key:"configuration",set:function(t){var e,n;c.isObject(t)?this.config=Object.assign({},t):this.config={holder:t},c.deprecationAssert(!!this.config.holderId,"config.holderId","config.holder"),this.config.holderId&&!this.config.holder&&(this.config.holder=this.config.holderId,this.config.holderId=null),null==this.config.holder&&(this.config.holder="editorjs"),this.config.logLevel||(this.config.logLevel=c.LogLevels.VERBOSE),c.setLogLevel(this.config.logLevel),c.deprecationAssert(Boolean(this.config.initialBlock),"config.initialBlock","config.defaultBlock"),this.config.defaultBlock=this.config.defaultBlock||this.config.initialBlock||"paragraph",this.config.minHeight=void 0!==this.config.minHeight?this.config.minHeight:300;var o={type:this.config.defaultBlock,data:{}};this.config.placeholder=this.config.placeholder||!1,this.config.sanitizer=this.config.sanitizer||{p:!0,b:!0,a:!0},this.config.hideToolbar=!!this.config.hideToolbar&&this.config.hideToolbar,this.config.tools=this.config.tools||{},this.config.i18n=this.config.i18n||{},this.config.data=this.config.data||{blocks:[]},this.config.onReady=this.config.onReady||function(){},this.config.onChange=this.config.onChange||function(){},this.config.inlineToolbar=void 0===this.config.inlineToolbar||this.config.inlineToolbar,!c.isEmpty(this.config.data)&&this.config.data.blocks&&0!==this.config.data.blocks.length||(this.config.data={blocks:[o]}),this.config.readOnly=this.config.readOnly||!1,(null===(e=this.config.i18n)||void 0===e?void 0:e.messages)&&u.default.setDictionary(this.config.i18n.messages),this.config.i18n.direction=(null===(n=this.config.i18n)||void 0===n?void 0:n.direction)||"ltr"},get:function(){return this.config}}]),t}();o.default=y,y.displayName="Core",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o=n(149);t.exports=function(t){if(Array.isArray(t))return o(t)}},function(t,e){t.exports=function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}},function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e){t.exports=function(t){return-1!==Function.toString.call(t).indexOf("[native code]")}},function(t,e,n){var o=n(110),r=n(374);function i(e,n,a){return r()?t.exports=i=Reflect.construct:t.exports=i=function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&o(i,n.prototype),i},i.apply(null,arguments)}t.exports=i},function(t,e){t.exports=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}},function(t,e,n){var o={"./api":82,"./api/":82,"./api/blocks":154,"./api/blocks.ts":154,"./api/caret":155,"./api/caret.ts":155,"./api/events":156,"./api/events.ts":156,"./api/i18n":157,"./api/i18n.ts":157,"./api/index":82,"./api/index.ts":82,"./api/inlineToolbar":158,"./api/inlineToolbar.ts":158,"./api/listeners":159,"./api/listeners.ts":159,"./api/notifier":160,"./api/notifier.ts":160,"./api/readonly":161,"./api/readonly.ts":161,"./api/sanitizer":162,"./api/sanitizer.ts":162,"./api/saver":163,"./api/saver.ts":163,"./api/selection":164,"./api/selection.ts":164,"./api/styles":165,"./api/styles.ts":165,"./api/toolbar":166,"./api/toolbar.ts":166,"./api/tooltip":167,"./api/tooltip.ts":167,"./api/ui":168,"./api/ui.ts":168,"./blockEvents":169,"./blockEvents.ts":169,"./blockManager":170,"./blockManager.ts":170,"./blockSelection":171,"./blockSelection.ts":171,"./caret":172,"./caret.ts":172,"./crossBlockSelection":173,"./crossBlockSelection.ts":173,"./dragNDrop":174,"./dragNDrop.ts":174,"./modificationsObserver":175,"./modificationsObserver.ts":175,"./paste":176,"./paste.ts":176,"./readonly":177,"./readonly.ts":177,"./rectangleSelection":178,"./rectangleSelection.ts":178,"./renderer":179,"./renderer.ts":179,"./saver":180,"./saver.ts":180,"./toolbar":83,"./toolbar/":83,"./toolbar/blockSettings":181,"./toolbar/blockSettings.ts":181,"./toolbar/conversion":182,"./toolbar/conversion.ts":182,"./toolbar/index":83,"./toolbar/index.ts":83,"./toolbar/inline":183,"./toolbar/inline.ts":183,"./tools":184,"./tools.ts":184,"./ui":186,"./ui.ts":186};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}r.keys=function(){return Object.keys(o)},r.resolve=i,t.exports=r,r.id=375},function(t,e,n){var o=n(4);t.exports=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=o(t)););return t}},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(378)],void 0===(i="function"==typeof(o=function(o,r,i,a){"use strict";var s=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=s(r),i=s(i),a=s(a);var l=function(){function t(){(0,r.default)(this,t)}return(0,i.default)(t,[{key:"show",value:function(t){a.default.show(t)}}]),t}();o.default=l,l.displayName="Notifier",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){window,t.exports=function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=0)}([function(t,e,n){"use strict";n(1),t.exports=function(){var t=n(6),e=null;return{show:function(n){if(n.message){!function(){if(e)return!0;e=t.getWrapper(),document.body.appendChild(e)}();var o=null,r=n.time||8e3;switch(n.type){case"confirm":o=t.confirm(n);break;case"prompt":o=t.prompt(n);break;default:o=t.alert(n),window.setTimeout((function(){o.remove()}),r)}e.appendChild(o),o.classList.add("cdx-notify--bounce-in")}}}}()},function(t,e,n){var o=n(2);"string"==typeof o&&(o=[[t.i,o,""]]),n(4)(o,{hmr:!0,transform:void 0,insertInto:void 0}),o.locals&&(t.exports=o.locals)},function(t,e,n){(t.exports=n(3)(!1)).push([t.i,'.cdx-notify--error{background:#fffbfb!important}.cdx-notify--error::before{background:#fb5d5d!important}.cdx-notify__input{max-width:130px;padding:5px 10px;background:#f7f7f7;border:0;border-radius:3px;font-size:13px;color:#656b7c;outline:0}.cdx-notify__input:-ms-input-placeholder{color:#656b7c}.cdx-notify__input::placeholder{color:#656b7c}.cdx-notify__input:focus:-ms-input-placeholder{color:rgba(101,107,124,.3)}.cdx-notify__input:focus::placeholder{color:rgba(101,107,124,.3)}.cdx-notify__button{border:none;border-radius:3px;font-size:13px;padding:5px 10px;cursor:pointer}.cdx-notify__button:last-child{margin-left:10px}.cdx-notify__button--cancel{background:#f2f5f7;box-shadow:0 2px 1px 0 rgba(16,19,29,0);color:#656b7c}.cdx-notify__button--cancel:hover{background:#eee}.cdx-notify__button--confirm{background:#34c992;box-shadow:0 1px 1px 0 rgba(18,49,35,.05);color:#fff}.cdx-notify__button--confirm:hover{background:#33b082}.cdx-notify__btns-wrapper{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin-top:5px}.cdx-notify__cross{position:absolute;top:5px;right:5px;width:10px;height:10px;padding:5px;opacity:.54;cursor:pointer}.cdx-notify__cross::after,.cdx-notify__cross::before{content:\'\';position:absolute;left:9px;top:5px;height:12px;width:2px;background:#575d67}.cdx-notify__cross::before{transform:rotate(-45deg)}.cdx-notify__cross::after{transform:rotate(45deg)}.cdx-notify__cross:hover{opacity:1}.cdx-notifies{position:fixed;z-index:2;bottom:20px;left:20px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif}.cdx-notify{position:relative;width:220px;margin-top:15px;padding:13px 16px;background:#fff;box-shadow:0 11px 17px 0 rgba(23,32,61,.13);border-radius:5px;font-size:14px;line-height:1.4em;word-wrap:break-word}.cdx-notify::before{content:\'\';position:absolute;display:block;top:0;left:0;width:3px;height:calc(100% - 6px);margin:3px;border-radius:5px;background:0 0}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}100%{transform:scale(1)}}.cdx-notify--bounce-in{animation-name:bounceIn;animation-duration:.6s;animation-iteration-count:1}.cdx-notify--success{background:#fafffe!important}.cdx-notify--success::before{background:#41ffb1!important}',""])},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n,o=t[1]||"",r=t[3];if(!r)return o;if(e&&"function"==typeof btoa){var i=(n=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */"),a=r.sources.map((function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"}));return[o].concat(a).concat([i]).join("\n")}return[o].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var o={},r=0;r=0&&u.splice(e,1)}function g(t){var e=document.createElement("style");return void 0===t.attrs.type&&(t.attrs.type="text/css"),y(e,t.attrs),h(t,e),e}function y(t,e){Object.keys(e).forEach((function(n){t.setAttribute(n,e[n])}))}function b(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var a=c++;n=l||(l=g(e)),o=x.bind(null,n,a,!1),r=x.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",y(e,t.attrs),h(t,e),e}(e),o=function(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=f(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,e),r=function(){v(n),n.href&&URL.revokeObjectURL(n.href)}):(n=g(e),o=function(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),r=function(){v(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=p(t,e);return d(n,e),function(t){for(var o=[],r=0;r0;)e.insertBefore(l.childNodes[0],l);e.removeChild(l),this._sanitize(t,e);break}for(var v=0;v{this.showed&&this.hide(!0)},this.loadStyles(),this.prepare(),window.addEventListener("scroll",this.handleWindowScroll,{passive:!0})}get CSS(){return{tooltip:"ct",tooltipContent:"ct__content",tooltipShown:"ct--shown",placement:{left:"ct--left",bottom:"ct--bottom",right:"ct--right",top:"ct--top"}}}show(t,e,n){this.nodes.wrapper||this.prepare(),this.hidingTimeout&&clearTimeout(this.hidingTimeout);const o=Object.assign({placement:"bottom",marginTop:0,marginLeft:0,marginRight:0,marginBottom:0,delay:70,hidingDelay:0},n);if(o.hidingDelay&&(this.hidingDelay=o.hidingDelay),this.nodes.content.innerHTML="","string"==typeof e)this.nodes.content.appendChild(document.createTextNode(e));else{if(!(e instanceof Node))throw Error("[CodeX Tooltip] Wrong type of «content» passed. It should be an instance of Node or String. But "+typeof e+" given.");this.nodes.content.appendChild(e)}switch(this.nodes.wrapper.classList.remove(...Object.values(this.CSS.placement)),o.placement){case"top":this.placeTop(t,o);break;case"left":this.placeLeft(t,o);break;case"right":this.placeRight(t,o);break;case"bottom":default:this.placeBottom(t,o)}o&&o.delay?this.showingTimeout=setTimeout(()=>{this.nodes.wrapper.classList.add(this.CSS.tooltipShown),this.showed=!0},o.delay):(this.nodes.wrapper.classList.add(this.CSS.tooltipShown),this.showed=!0)}hide(t=!1){if(this.hidingDelay&&!t)return this.hidingTimeout&&clearTimeout(this.hidingTimeout),void(this.hidingTimeout=setTimeout(()=>{this.hide(!0)},this.hidingDelay));this.nodes.wrapper.classList.remove(this.CSS.tooltipShown),this.showed=!1,this.showingTimeout&&clearTimeout(this.showingTimeout)}onHover(t,e,n){t.addEventListener("mouseenter",()=>{this.show(t,e,n)}),t.addEventListener("mouseleave",()=>{this.hide()})}destroy(){this.nodes.wrapper.remove(),window.removeEventListener("scroll",this.handleWindowScroll)}prepare(){this.nodes.wrapper=this.make("div",this.CSS.tooltip),this.nodes.content=this.make("div",this.CSS.tooltipContent),this.append(this.nodes.wrapper,this.nodes.content),this.append(document.body,this.nodes.wrapper)}loadStyles(){const t="codex-tooltips-style";if(document.getElementById(t))return;const e=n(2),o=this.make("style",null,{textContent:e.toString(),id:t});this.prepend(document.head,o)}placeBottom(t,e){const n=t.getBoundingClientRect(),o=n.left+t.clientWidth/2-this.nodes.wrapper.offsetWidth/2,r=n.bottom+window.pageYOffset+this.offsetTop+e.marginTop;this.applyPlacement("bottom",o,r)}placeTop(t,e){const n=t.getBoundingClientRect(),o=n.left+t.clientWidth/2-this.nodes.wrapper.offsetWidth/2,r=n.top+window.pageYOffset-this.nodes.wrapper.clientHeight-this.offsetTop;this.applyPlacement("top",o,r)}placeLeft(t,e){const n=t.getBoundingClientRect(),o=n.left-this.nodes.wrapper.offsetWidth-this.offsetLeft-e.marginLeft,r=n.top+window.pageYOffset+t.clientHeight/2-this.nodes.wrapper.offsetHeight/2;this.applyPlacement("left",o,r)}placeRight(t,e){const n=t.getBoundingClientRect(),o=n.right+this.offsetRight+e.marginRight,r=n.top+window.pageYOffset+t.clientHeight/2-this.nodes.wrapper.offsetHeight/2;this.applyPlacement("right",o,r)}applyPlacement(t,e,n){this.nodes.wrapper.classList.add(this.CSS.placement[t]),this.nodes.wrapper.style.left=e+"px",this.nodes.wrapper.style.top=n+"px"}make(t,e=null,n={}){const o=document.createElement(t);Array.isArray(e)?o.classList.add(...e):e&&o.classList.add(e);for(const t in n)n.hasOwnProperty(t)&&(o[t]=n[t]);return o}append(t,e){Array.isArray(e)?e.forEach(e=>t.appendChild(e)):t.appendChild(e)}prepend(t,e){Array.isArray(e)?(e=e.reverse()).forEach(e=>t.prepend(e)):t.prepend(e)}}},function(t,e){t.exports='.ct{z-index:999;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-transition:opacity 50ms ease-in,-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,transform 70ms cubic-bezier(.215,.61,.355,1),-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);will-change:opacity,top,left;-webkit-box-shadow:0 8px 12px 0 rgba(29,32,43,.17),0 4px 5px -3px rgba(5,6,12,.49);box-shadow:0 8px 12px 0 rgba(29,32,43,.17),0 4px 5px -3px rgba(5,6,12,.49);border-radius:9px}.ct,.ct:before{position:absolute;top:0;left:0}.ct:before{content:"";bottom:0;right:0;background-color:#1d202b;z-index:-1;border-radius:4px}@supports(-webkit-mask-box-image:url("")){.ct:before{border-radius:0;-webkit-mask-box-image:url(\'data:image/svg+xml;charset=utf-8,\') 48% 41% 37.9% 53.3%}}@media (--mobile){.ct{display:none}}.ct__content{padding:6px 10px;color:#cdd1e0;font-size:12px;text-align:center;letter-spacing:.02em;line-height:1em}.ct:after{content:"";width:8px;height:8px;position:absolute;background-color:#1d202b;z-index:-1}.ct--bottom{-webkit-transform:translateY(5px);transform:translateY(5px)}.ct--bottom:after{top:-3px;left:50%;-webkit-transform:translateX(-50%) rotate(-45deg);transform:translateX(-50%) rotate(-45deg)}.ct--top{-webkit-transform:translateY(-5px);transform:translateY(-5px)}.ct--top:after{top:auto;bottom:-3px;left:50%;-webkit-transform:translateX(-50%) rotate(-45deg);transform:translateX(-50%) rotate(-45deg)}.ct--left{-webkit-transform:translateX(-5px);transform:translateX(-5px)}.ct--left:after{top:50%;left:auto;right:0;-webkit-transform:translate(41.6%,-50%) rotate(-45deg);transform:translate(41.6%,-50%) rotate(-45deg)}.ct--right{-webkit-transform:translateX(5px);transform:translateX(5px)}.ct--right:after{top:50%;left:0;-webkit-transform:translate(-41.6%,-50%) rotate(-45deg);transform:translate(-41.6%,-50%) rotate(-45deg)}.ct--shown{opacity:1;-webkit-transform:none;transform:none}'}]).default},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(14),n(7),n(25)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l){"use strict";var c=n(8),u=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),a=u(a),s=c(s),l=u(l);var f=function(){function t(e,n){(0,r.default)(this,t),this.cursor=-1,this.items=[],this.items=e||[],this.focusedCssClass=n}return(0,i.default)(t,[{key:"setItems",value:function(t){this.items=t}},{key:"next",value:function(){this.cursor=this.leafNodesAndReturnIndex(t.directions.RIGHT)}},{key:"previous",value:function(){this.cursor=this.leafNodesAndReturnIndex(t.directions.LEFT)}},{key:"dropCursor",value:function(){-1!==this.cursor&&(this.items[this.cursor].classList.remove(this.focusedCssClass),this.cursor=-1)}},{key:"leafNodesAndReturnIndex",value:function(e){var n=this;if(0===this.items.length)return this.cursor;var o=this.cursor;return-1===o?o=e===t.directions.RIGHT?-1:0:this.items[o].classList.remove(this.focusedCssClass),o=e===t.directions.RIGHT?(o+1)%this.items.length:(this.items.length+o-1)%this.items.length,a.default.canSetCaret(this.items[o])&&s.delay((function(){return l.default.setCursor(n.items[o])}),50)(),this.items[o].classList.add(this.focusedCssClass),o}},{key:"currentItem",get:function(){return-1===this.cursor?null:this.items[this.cursor]}}]),t}();o.default=f,f.displayName="DomIterator",f.directions={RIGHT:"right",LEFT:"left"},t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(7),n(14),n(61)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l){"use strict";var c=n(8),u=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),a=c(a),s=u(s);var f=function(){function t(e){(0,r.default)(this,t),this.blocks=[],this.workingArea=e}return(0,i.default)(t,[{key:"push",value:function(t){this.blocks.push(t),this.insertToDOM(t)}},{key:"swap",value:function(t,e){var n=this.blocks[e];s.default.swap(this.blocks[t].holder,n.holder),this.blocks[e]=this.blocks[t],this.blocks[t]=n}},{key:"move",value:function(t,e){var n=this.blocks.splice(e,1)[0],o=t-1,r=Math.max(0,o),i=this.blocks[r];t>0?this.insertToDOM(n,"afterend",i):this.insertToDOM(n,"beforebegin",i),this.blocks.splice(t,0,n);var a=this.composeBlockEvent("move",{fromIndex:e,toIndex:t});n.call(l.BlockToolAPI.MOVED,a)}},{key:"insert",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.length){t>this.length&&(t=this.length),n&&(this.blocks[t].holder.remove(),this.blocks[t].call(l.BlockToolAPI.REMOVED));var o=n?1:0;if(this.blocks.splice(t,o,e),t>0){var r=this.blocks[t-1];this.insertToDOM(e,"afterend",r)}else{var i=this.blocks[t+1];i?this.insertToDOM(e,"beforebegin",i):this.insertToDOM(e)}}else this.push(e)}},{key:"remove",value:function(t){isNaN(t)&&(t=this.length-1),this.blocks[t].holder.remove(),this.blocks[t].call(l.BlockToolAPI.REMOVED),this.blocks.splice(t,1)}},{key:"removeAll",value:function(){this.workingArea.innerHTML="",this.blocks.forEach((function(t){return t.call(l.BlockToolAPI.REMOVED)})),this.blocks.length=0}},{key:"insertAfter",value:function(t,e){var n=this.blocks.indexOf(t);this.insert(n+1,e)}},{key:"get",value:function(t){return this.blocks[t]}},{key:"indexOf",value:function(t){return this.blocks.indexOf(t)}},{key:"insertToDOM",value:function(t,e,n){e?n.holder.insertAdjacentElement(e,t.holder):this.workingArea.appendChild(t.holder),t.call(l.BlockToolAPI.RENDERED)}},{key:"composeBlockEvent",value:function(t,e){return new CustomEvent(t,{detail:e})}},{key:"length",get:function(){return this.blocks.length}},{key:"array",get:function(){return this.blocks}},{key:"nodes",get:function(){return a.array(this.workingArea.children)}}],[{key:"set",value:function(t,e,n){return isNaN(Number(e))?(Reflect.set(t,e,n),!0):(t.insert(+e,n),!0)}},{key:"get",value:function(t,e){return isNaN(Number(e))?Reflect.get(t,e):t.get(+e)}}]),t}();o.default=f,f.displayName="Blocks",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e],void 0===(i="function"==typeof(o=function(t){"use strict";var e;Object.defineProperty(t,"__esModule",{value:!0}),t.BlockMutationType=void 0,t.BlockMutationType=e,function(t){t.Added="block-added",t.Removed="block-removed",t.Moved="block-moved",t.Changed="block-changed"}(e||(t.BlockMutationType=e={}))})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){window,t.exports=function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){"use strict";function o(t,e){for(var n=0;n=0;s--)(r=t[s])&&(a=(i<3?r(a):i>3?r(e,n,a):r(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a};t.ToolboxEvent=x,function(t){t.Opened="toolbox-opened",t.Closed="toolbox-closed",t.BlockAdded="toolbox-block-added"}(x||(t.ToolboxEvent=x={}));var S=function(t){(0,s.default)(b,t);var n,u,h=(n=b,function(){var t,e=(0,c.default)(n);if(k()){var o=(0,c.default)(this).constructor;t=Reflect.construct(e,arguments,o)}else t=e.apply(this,arguments);return(0,l.default)(this,t)});function b(t){var e,n=t.api,o=t.tools,i=t.i18nLabels;return(0,r.default)(this,b),(e=h.call(this)).opened=!1,e.nodes={toolbox:null},e.clickListenerId=null,e.onOverlayClicked=function(){e.close()},e.api=n,e.tools=o,e.i18nLabels=i,e}return(0,i.default)(b,[{key:"make",value:function(){return this.popover=new v.default({className:b.CSS.toolbox,searchable:!0,filterLabel:this.i18nLabels.filter,nothingFoundLabel:this.i18nLabels.nothingFound,items:this.toolboxItemsToBeDisplayed}),this.popover.on(v.PopoverEvent.OverlayClicked,this.onOverlayClicked),this.enableShortcuts(),this.nodes.toolbox=this.popover.getElement(),this.nodes.toolbox}},{key:"hasFocus",value:function(){return this.popover.hasFocus()}},{key:"destroy",value:function(){(0,a.default)((0,c.default)(b.prototype),"destroy",this).call(this),this.nodes&&this.nodes.toolbox&&(this.nodes.toolbox.remove(),this.nodes.toolbox=null),this.api.listeners.offById(this.clickListenerId),this.removeAllShortcuts(),this.popover.off(v.PopoverEvent.OverlayClicked,this.onOverlayClicked)}},{key:"toolButtonActivated",value:function(t,e){this.insertNewBlock(t,e)}},{key:"open",value:function(){this.isEmpty||(this.shouldOpenPopoverBottom||(this.nodes.toolbox.style.setProperty("--popover-height",this.popover.calculateHeight()+"px"),this.nodes.toolbox.classList.add(b.CSS.toolboxOpenedTop)),this.popover.show(),this.opened=!0,this.emit(x.Opened))}},{key:"close",value:function(){this.popover.hide(),this.opened=!1,this.nodes.toolbox.classList.remove(b.CSS.toolboxOpenedTop),this.emit(x.Closed)}},{key:"toggle",value:function(){this.opened?this.close():this.open()}},{key:"areToolboxSettingsValid",value:function(t,e){return!(!t||t&&!t.icon&&(f.log("Toolbar icon is missed. Tool %o skipped","warn",e),1))}},{key:"enableShortcuts",value:function(){var t=this;this.toolsToBeDisplayed.forEach((function(e){var n=e.shortcut;n&&t.enableShortcutForTool(e.name,n)}))}},{key:"enableShortcutForTool",value:function(t,e){var n=this;p.default.add({name:e,on:this.api.ui.nodes.redactor,handler:function(e){e.preventDefault(),n.insertNewBlock(t)}})}},{key:"removeAllShortcuts",value:function(){var t=this;this.toolsToBeDisplayed.forEach((function(e){var n=e.shortcut;n&&p.default.remove(t.api.ui.nodes.redactor,n)}))}},{key:"insertNewBlock",value:(u=(0,o.default)(e.default.mark((function t(n,o){var r,i,a,s,l,c;return e.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=this.api.blocks.getCurrentBlockIndex(),i=this.api.blocks.getBlockByIndex(r)){t.next=4;break}return t.abrupt("return");case 4:if(a=i.isEmpty?r:r+1,!o){t.next=10;break}return t.next=8,this.api.blocks.composeBlockData(n);case 8:l=t.sent,s=Object.assign(l,o);case 10:(c=this.api.blocks.insert(n,s,void 0,a,void 0,i.isEmpty)).call(d.BlockToolAPI.APPEND_CALLBACK),this.api.caret.setToBlock(a),this.emit(x.BlockAdded,{block:c}),this.api.toolbar.close();case 15:case"end":return t.stop()}}),t,this)}))),function(t,e){return u.apply(this,arguments)})},{key:"isEmpty",get:function(){return 0===this.toolsToBeDisplayed.length}},{key:"shouldOpenPopoverBottom",get:function(){var t=this.nodes.toolbox.getBoundingClientRect(),e=this.api.ui.nodes.redactor.getBoundingClientRect(),n=this.popover.calculateHeight(),o=t.top+n,r=t.top-n,i=Math.min(window.innerHeight,e.bottom);return r=0;l--)(r=t[l])&&(a=(i<3?r(a):i>3?r(e,n,a):r(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a};t.PopoverEvent=y,function(t){t.OverlayClicked="overlay-clicked"}(y||(t.PopoverEvent=y={}));var m=function(t){(0,r.default)(d,t);var n,s=(n=d,function(){var t,e=(0,a.default)(n);if(g()){var o=(0,a.default)(this).constructor;t=Reflect.construct(e,arguments,o)}else t=e.apply(this,arguments);return(0,i.default)(this,t)});function d(t){var n,o=t.items,r=t.className,i=t.searchable,a=t.filterLabel,l=t.nothingFoundLabel;return(0,e.default)(this,d),(n=s.call(this)).isShown=!1,n.nodes={wrapper:null,popover:null,items:null,nothingFound:null,overlay:null},n.scrollLocker=new h.default,n.items=o,n.className=r||"",n.searchable=i,n.listeners=new c.default,n.filterLabel=a,n.nothingFoundLabel=l,n.render(),n.enableFlipper(),n}return(0,o.default)(d,[{key:"getElement",value:function(){return this.nodes.wrapper}},{key:"show",value:function(){var t=this;this.search.clear(),this.nodes.items.scrollTop=0,this.nodes.popover.classList.add(d.CSS.popoverOpened),this.nodes.overlay.classList.remove(d.CSS.popoverOverlayHidden),this.flipper.activate(),this.searchable&&window.requestAnimationFrame((function(){t.search.focus()})),(0,p.isMobileScreen)()&&this.scrollLocker.lock(),this.isShown=!0}},{key:"hide",value:function(){this.isShown&&(this.nodes.popover.classList.remove(d.CSS.popoverOpened),this.nodes.overlay.classList.add(d.CSS.popoverOverlayHidden),this.flipper.deactivate(),(0,p.isMobileScreen)()&&this.scrollLocker.unlock(),this.isShown=!1)}},{key:"destroy",value:function(){this.listeners.removeAll()}},{key:"hasFocus",value:function(){return this.flipper.hasFocus()}},{key:"calculateHeight",value:function(){var t,e=this.nodes.popover.cloneNode(!0);return e.style.visibility="hidden",e.style.position="absolute",e.style.top="-1000px",e.classList.add(d.CSS.popoverOpened),document.body.appendChild(e),t=e.offsetHeight,e.remove(),t}},{key:"render",value:function(){var t=this;this.nodes.wrapper=l.default.make("div",this.className),this.nodes.popover=l.default.make("div",d.CSS.popover),this.nodes.wrapper.appendChild(this.nodes.popover),this.nodes.overlay=l.default.make("div",[d.CSS.popoverOverlay,d.CSS.popoverOverlayHidden]),this.nodes.wrapper.appendChild(this.nodes.overlay),this.searchable&&this.addSearch(this.nodes.popover),this.nodes.items=l.default.make("div",d.CSS.itemsWrapper),this.items.forEach((function(e){t.nodes.items.appendChild(t.createItem(e))})),this.nodes.popover.appendChild(this.nodes.items),this.nodes.nothingFound=l.default.make("div",[d.CSS.noFoundMessage],{textContent:this.nothingFoundLabel}),this.nodes.popover.appendChild(this.nodes.nothingFound),this.listeners.on(this.nodes.popover,"click",(function(e){var n=e.target.closest(".".concat(d.CSS.item));n&&t.itemClicked(n)})),this.listeners.on(this.nodes.overlay,"click",(function(){t.emit(y.OverlayClicked)}))}},{key:"addSearch",value:function(t){var e=this;this.search=new f.default({items:this.items,placeholder:this.filterLabel,onSearch:function(t){var n=[];e.items.forEach((function(o,r){var i=e.nodes.items.children[r];t.includes(o)?(n.push(i),i.classList.remove(d.CSS.itemHidden)):i.classList.add(d.CSS.itemHidden)})),e.nodes.nothingFound.classList.toggle(d.CSS.noFoundMessageShown,0===n.length),e.flipper.deactivate(),e.flipper.activate(n),e.flipper.focusFirst()}});var n=this.search.getElement();t.appendChild(n)}},{key:"createItem",value:function(t){var e=l.default.make("div",d.CSS.item);e.dataset.itemName=t.name;var n=l.default.make("div",d.CSS.itemLabel,{innerHTML:t.label});return t.icon&&e.appendChild(l.default.make("div",d.CSS.itemIcon,{innerHTML:t.icon})),e.appendChild(n),t.secondaryLabel&&e.appendChild(l.default.make("div",d.CSS.itemSecondaryLabel,{textContent:t.secondaryLabel})),e}},{key:"itemClicked",value:function(t){var e=this.nodes.wrapper.querySelectorAll(".".concat(d.CSS.item)),n=Array.from(e).indexOf(t),o=this.items[n];o.onClick(o)}},{key:"enableFlipper",value:function(){var t=Array.from(this.nodes.wrapper.querySelectorAll(".".concat(d.CSS.item)));this.flipper=new u.default({items:t,focusedItemClass:d.CSS.itemFocused,allowedKeys:[p.keyCodes.TAB,p.keyCodes.UP,p.keyCodes.DOWN,p.keyCodes.ENTER]})}}],[{key:"CSS",get:function(){return{popover:"ce-popover",popoverOpened:"ce-popover--opened",itemsWrapper:"ce-popover__items",item:"ce-popover__item",itemHidden:"ce-popover__item--hidden",itemFocused:"ce-popover__item--focused",itemLabel:"ce-popover__item-label",itemIcon:"ce-popover__item-icon",itemSecondaryLabel:"ce-popover__item-secondary-label",noFoundMessage:"ce-popover__no-found",noFoundMessageShown:"ce-popover__no-found--shown",popoverOverlay:"ce-popover__overlay",popoverOverlayHidden:"ce-popover__overlay--hidden"}}}]),d}(d.default);t.default=m,m.displayName="Popover",b([p.cacheable],m.prototype,"calculateHeight",null)})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(14),n(111)],void 0===(i="function"==typeof(o=function(o,r,i,a,s){"use strict";var l=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=l(r),i=l(i),a=l(a),s=l(s);var c=function(){function t(e){var n=e.items,o=e.onSearch,i=e.placeholder;(0,r.default)(this,t),this.listeners=new s.default,this.items=n,this.onSearch=o,this.render(i)}return(0,i.default)(t,[{key:"getElement",value:function(){return this.wrapper}},{key:"focus",value:function(){this.input.focus()}},{key:"clear",value:function(){this.input.value="",this.searchQuery="",this.onSearch(this.foundItems)}},{key:"destroy",value:function(){this.listeners.removeAll()}},{key:"render",value:function(e){var n=this;this.wrapper=a.default.make("div",t.CSS.wrapper);var o=a.default.make("div",t.CSS.icon),r=a.default.svg("search",16,16);this.input=a.default.make("input",t.CSS.input,{placeholder:e}),o.appendChild(r),this.wrapper.appendChild(o),this.wrapper.appendChild(this.input),this.listeners.on(this.input,"input",(function(){n.searchQuery=n.input.value,n.onSearch(n.foundItems)}))}},{key:"checkItem",value:function(t){var e=t.label.toLowerCase(),n=this.searchQuery.toLowerCase();return e.includes(n)}},{key:"foundItems",get:function(){var t=this;return this.items.filter((function(e){return t.checkItem(e)}))}}],[{key:"CSS",get:function(){return{wrapper:"cdx-search-field",icon:"cdx-search-field__icon",input:"cdx-search-field__input"}}}]),t}();o.default=c,c.displayName="SearchInput",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(7)],void 0===(i="function"==typeof(o=function(o,r,i,a){"use strict";var s=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=s(r),i=s(i);var l=function(){function t(){(0,r.default)(this,t)}return(0,i.default)(t,[{key:"lock",value:function(){a.isIosDevice?this.lockHard():document.body.classList.add(t.CSS.scrollLocked)}},{key:"unlock",value:function(){a.isIosDevice?this.unlockHard():document.body.classList.remove(t.CSS.scrollLocked)}},{key:"lockHard",value:function(){this.scrollPosition=window.pageYOffset,document.documentElement.style.setProperty("--window-scroll-offset","".concat(this.scrollPosition,"px")),document.body.classList.add(t.CSS.scrollLockedHard)}},{key:"unlockHard",value:function(){document.body.classList.remove(t.CSS.scrollLockedHard),null!==this.scrollPosition&&window.scrollTo(0,this.scrollPosition),this.scrollPosition=null}}]),t}();o.default=l,l.displayName="ScrollLocker",l.CSS={scrollLocked:"ce-scroll-locked",scrollLockedHard:"ce-scroll-locked--hard"},t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){window,t.exports=function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=0)}([function(t,e,n){function o(t,e){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0];this.nodes.input.classList.add(this.CSS.inputShowed),t&&this.nodes.input.focus(),this.inputOpened=!0}},{key:"closeActions",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this.selection.isFakeBackgroundEnabled){var e=new a.default;e.save(),this.selection.restore(),this.selection.removeFakeBackground(),e.restore()}this.nodes.input.classList.remove(this.CSS.inputShowed),this.nodes.input.value="",t&&this.selection.clearSaved(),this.inputOpened=!1}},{key:"enterPressed",value:function(t){var e=this.nodes.input.value||"";return e.trim()?this.validateURL(e)?(e=this.prepareLink(e),this.selection.restore(),this.selection.removeFakeBackground(),this.insertLink(e),t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),this.selection.collapseToEnd(),void this.inlineToolbar.close()):(this.notifier.show({message:"Pasted link is not valid.",style:"error"}),void l.log("Incorrect Link pasted","warn",e)):(this.selection.restore(),this.unlink(),t.preventDefault(),void this.closeActions())}},{key:"validateURL",value:function(t){return!/\s/.test(t)}},{key:"prepareLink",value:function(t){return t=t.trim(),t=this.addProtocol(t)}},{key:"addProtocol",value:function(t){if(/^(\w+):(\/\/)?/.test(t))return t;var e=/^\/[^/\s]/.test(t),n="#"===t.substring(0,1),o=/^\/\/[^/\s]/.test(t);return e||n||o||(t="http://"+t),t}},{key:"insertLink",value:function(t){var e=this.selection.findParentTag("A");e&&this.selection.expandToTag(e),document.execCommand(this.commandLink,!1,t)}},{key:"unlink",value:function(){document.execCommand(this.commandUnlink)}},{key:"shortcut",get:function(){return"CMD+K"}}],[{key:"sanitize",get:function(){return{a:{href:!0,target:"_blank",rel:"nofollow"}}}}]),t}();o.default=f,f.displayName="LinkInlineTool",f.isInline=!0,f.title="Link",t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(14)],void 0===(i="function"==typeof(o=function(o,r,i,a){"use strict";var s=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=s(r),i=s(i),a=s(a);var l=function(){function t(e){var n=e.data,o=e.api;(0,r.default)(this,t),this.CSS={wrapper:"ce-stub",info:"ce-stub__info",title:"ce-stub__title",subtitle:"ce-stub__subtitle"},this.api=o,this.title=n.title||this.api.i18n.t("Error"),this.subtitle=this.api.i18n.t("The block can not be displayed correctly."),this.savedData=n.savedData,this.wrapper=this.make()}return(0,i.default)(t,[{key:"render",value:function(){return this.wrapper}},{key:"save",value:function(){return this.savedData}},{key:"make",value:function(){var t=a.default.make("div",this.CSS.wrapper),e=a.default.svg("sad-face",52,52),n=a.default.make("div",this.CSS.info),o=a.default.make("div",this.CSS.title,{textContent:this.title}),r=a.default.make("div",this.CSS.subtitle,{textContent:this.subtitle});return t.appendChild(e),n.appendChild(o),n.appendChild(r),t.appendChild(n),t}}]),t}();o.default=l,l.displayName="Stub",l.isReadOnlySupported=!0,t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(68),n(395),n(396),n(397)],void 0===(i="function"==typeof(o=function(o,r,i,a,s,l,c){"use strict";var u=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=u(r),i=u(i),s=u(s),l=u(l),c=u(c);var f=function(t,e){var n={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(t);r=0;s--)(r=t[s])&&(a=(i<3?r(a):i>3?r(e,n,a):r(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a},b=function(t){(0,s.default)(o,t);var e,n=(e=o,function(){var t,n=(0,c.default)(e);if(g()){var o=(0,c.default)(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return(0,l.default)(this,t)});function o(){var t;return(0,r.default)(this,o),(t=n.apply(this,arguments)).type=f.ToolType.Block,t.inlineTools=new p.default,t.tunes=new p.default,t}return(0,i.default)(o,[{key:"create",value:function(t,e,n){return new this.constructable({data:t,block:e,readOnly:n,api:this.api.getMethodsForTool(this),config:this.settings})}},{key:"isReadOnlySupported",get:function(){return!0===this.constructable[f.InternalBlockToolSettings.IsReadOnlySupported]}},{key:"isLineBreaksEnabled",get:function(){return this.constructable[f.InternalBlockToolSettings.IsEnabledLineBreaks]}},{key:"toolbox",get:function(){var t=this.constructable[f.InternalBlockToolSettings.Toolbox],e=this.config[f.UserSettings.Toolbox];if(!d.isEmpty(t)&&!1!==e)return e?Array.isArray(t)?Array.isArray(e)?e.map((function(e,n){var o=t[n];return o?Object.assign(Object.assign({},o),e):e})):[e]:Array.isArray(e)?e:[Object.assign(Object.assign({},t),e)]:Array.isArray(t)?t:[t]}},{key:"conversionConfig",get:function(){return this.constructable[f.InternalBlockToolSettings.ConversionConfig]}},{key:"enabledInlineTools",get:function(){return this.config[f.UserSettings.EnabledInlineTools]||!1}},{key:"enabledBlockTunes",get:function(){return this.config[f.UserSettings.EnabledBlockTunes]}},{key:"pasteConfig",get:function(){return this.constructable[f.InternalBlockToolSettings.PasteConfig]||{}}},{key:"sanitizeConfig",get:function(){var t=(0,a.default)((0,c.default)(o.prototype),"sanitizeConfig",this),e=this.baseSanitizeConfig;if(d.isEmpty(t))return e;var n={};for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var i=t[r];d.isObject(i)?n[r]=Object.assign({},e,i):n[r]=i}return n}},{key:"baseSanitizeConfig",get:function(){var t={};return Array.from(this.inlineTools.values()).forEach((function(e){return Object.assign(t,e.sanitizeConfig)})),Array.from(this.tunes.values()).forEach((function(e){return Object.assign(t,e.sanitizeConfig)})),t}}]),o}(f.default);o.default=b,b.displayName="BlockTool",y([d.cacheable],b.prototype,"sanitizeConfig",null),y([d.cacheable],b.prototype,"baseSanitizeConfig",null),t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){var o,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e,n(2),n(3),n(14)],void 0===(i="function"==typeof(o=function(o,r,i,a){"use strict";var s=n(1);Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0,r=s(r),i=s(i),a=s(a);var l=function(){function t(e){var n=e.api;(0,r.default)(this,t),this.CSS={button:"ce-settings__button",wrapper:"ce-tune-move-down",animation:"wobble"},this.api=n}return(0,i.default)(t,[{key:"render",value:function(){var t=this,e=a.default.make("div",[this.CSS.button,this.CSS.wrapper],{});return e.appendChild(a.default.svg("arrow-down",14,14)),this.api.listeners.on(e,"click",(function(n){return t.handleClick(n,e)}),!1),this.api.tooltip.onHover(e,this.api.i18n.t("Move down"),{hidingDelay:300}),e}},{key:"handleClick",value:function(t,e){var n=this,o=this.api.blocks.getCurrentBlockIndex(),r=this.api.blocks.getBlockByIndex(o+1);if(!r)return e.classList.add(this.CSS.animation),void window.setTimeout((function(){e.classList.remove(n.CSS.animation)}),500);var i=r.holder,a=i.getBoundingClientRect(),s=Math.abs(window.innerHeight-i.offsetHeight);a.top0?Math.abs(c.top)-Math.abs(u.top):window.innerHeight-Math.abs(c.top)+Math.abs(u.top),window.scrollBy(0,-1*a),this.api.blocks.move(o-1),this.api.toolbar.toggleBlockSettings(!0),this.api.tooltip.hide()}}]),t}();o.default=l,l.displayName="MoveUpTune",l.isTune=!0,t.exports=e.default})?o.apply(e,r):o)||(t.exports=i)},function(t,e,n){"use strict";n.r(e),e.default='\n\n\n \n\n\n\n \n\n\n\n\n\n \n\n\n\n \n \n \n \n \n \n \n \n\n\n\n \n\n\n\n \n\n\n\n \n \n \n \n\n\n\n \n\n\n\n \n\n\n\n \n\n\n\n \n\n'},function(t,e){t.exports='.codex-editor{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:1}.codex-editor .hide,.codex-editor__redactor--hidden{display:none}.codex-editor__redactor [contenteditable]:empty:after{content:"\\feff "}@media (min-width:651px){.codex-editor--narrow .codex-editor__redactor{margin-right:50px}}@media (min-width:651px){.codex-editor--narrow.codex-editor--rtl .codex-editor__redactor{margin-left:50px;margin-right:0}}@media (min-width:651px){.codex-editor--narrow .ce-toolbar__actions{right:-5px}}.codex-editor__loader{position:relative;height:30vh}.codex-editor__loader:before{content:"";position:absolute;left:50%;top:50%;width:30px;height:30px;margin-top:-15px;margin-left:-15px;border-radius:50%;border:2px solid rgba(201,201,204,.48);border-top-color:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-animation:editor-loader-spin .8s linear infinite;animation:editor-loader-spin .8s linear infinite;will-change:transform}.codex-editor-copyable{position:absolute;height:1px;width:1px;top:-400%;opacity:.001}.codex-editor-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999;pointer-events:none;overflow:hidden}.codex-editor-overlay__container{position:relative;pointer-events:auto;z-index:0}.codex-editor-overlay__rectangle{position:absolute;pointer-events:none;background-color:rgba(46,170,220,.2);border:1px solid transparent}.codex-editor svg{fill:currentColor;vertical-align:middle;max-height:100%}::-moz-selection{background-color:#d4ecff}::selection{background-color:#d4ecff}.codex-editor--toolbox-opened [contentEditable=true][data-placeholder]:focus:before{opacity:0!important}@-webkit-keyframes editor-loader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes editor-loader-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.ce-scroll-locked{overflow:hidden}.ce-scroll-locked--hard{overflow:hidden;top:calc(-1*var(--window-scroll-offset));position:fixed;width:100%}.ce-toolbar{position:absolute;left:0;right:0;top:0;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;will-change:opacity,top;display:none}.ce-toolbar--opened{display:block}.ce-toolbar__content{max-width:650px;margin:0 auto;position:relative}.ce-toolbar__plus{color:#1d202b;cursor:pointer;width:26px;height:26px;border-radius:7px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (max-width:650px){.ce-toolbar__plus{width:36px;height:36px}}@media (hover:hover){.ce-toolbar__plus:hover{background-color:#eff2f5}}.ce-toolbar__plus{-ms-flex-negative:0;flex-shrink:0}.ce-toolbar__plus--active{background-color:#eff2f5;-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.ce-toolbar__plus-shortcut{opacity:.6;word-spacing:-2px;margin-top:5px}@media (max-width:650px){.ce-toolbar__plus{position:absolute;background-color:#fff;border:1px solid #e8e8eb;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px rgba(13,20,33,.13);border-radius:6px;z-index:2}}@media (max-width:650px) and (max-width:650px){.ce-toolbar__plus{-webkit-box-shadow:0 8px 6px -6px rgba(33,48,73,.19);box-shadow:0 8px 6px -6px rgba(33,48,73,.19);border-bottom-color:#c7c7c7}}@media (max-width:650px){.ce-toolbar__plus{position:static}.ce-toolbar__plus--left-oriented:before{left:15px;margin-left:0}.ce-toolbar__plus--right-oriented:before{left:auto;right:15px;margin-left:0}}.ce-toolbar__actions{position:absolute;right:100%;opacity:0;display:-webkit-box;display:-ms-flexbox;display:flex;padding-right:5px}.ce-toolbar__actions--opened{opacity:1}@media (max-width:650px){.ce-toolbar__actions{right:auto}}.ce-toolbar__settings-btn{color:#1d202b;width:26px;height:26px;border-radius:7px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width:650px){.ce-toolbar__settings-btn{width:36px;height:36px}}@media (hover:hover){.ce-toolbar__settings-btn:hover{background-color:#eff2f5}}.ce-toolbar__settings-btn{margin-left:5px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ce-toolbar__settings-btn--active{background-color:#eff2f5;-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@media (min-width:651px){.ce-toolbar__settings-btn{width:18px}}.ce-toolbar__settings-btn--hidden{display:none}@media (max-width:650px){.ce-toolbar__settings-btn{position:absolute;background-color:#fff;border:1px solid #e8e8eb;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px rgba(13,20,33,.13);border-radius:6px;z-index:2}}@media (max-width:650px) and (max-width:650px){.ce-toolbar__settings-btn{-webkit-box-shadow:0 8px 6px -6px rgba(33,48,73,.19);box-shadow:0 8px 6px -6px rgba(33,48,73,.19);border-bottom-color:#c7c7c7}}@media (max-width:650px){.ce-toolbar__settings-btn{position:static}.ce-toolbar__settings-btn--left-oriented:before{left:15px;margin-left:0}.ce-toolbar__settings-btn--right-oriented:before{left:auto;right:15px;margin-left:0}}@media (min-width:651px){.codex-editor--narrow .ce-toolbar__plus{left:5px}}.ce-toolbox{--gap:8px}@media (min-width:651px){.ce-toolbox{position:absolute;top:calc(26px + var(--gap));left:0}.ce-toolbox--opened-top{top:calc(-1*(var(--gap) + var(--popover-height)))}}@media (min-width:651px){.codex-editor--narrow .ce-toolbox{left:auto;right:0}.codex-editor--narrow .ce-toolbox .ce-popover{right:0}}.ce-inline-toolbar{position:absolute;background-color:#fff;border:1px solid #e8e8eb;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px rgba(13,20,33,.13);border-radius:6px;z-index:2}@media (max-width:650px){.ce-inline-toolbar{-webkit-box-shadow:0 8px 6px -6px rgba(33,48,73,.19);box-shadow:0 8px 6px -6px rgba(33,48,73,.19);border-bottom-color:#c7c7c7}}.ce-inline-toolbar{-webkit-transform:translateX(-50%) translateY(8px) scale(.9);transform:translateX(-50%) translateY(8px) scale(.9);opacity:0;visibility:hidden;-webkit-transition:opacity .25s ease,-webkit-transform .15s ease;transition:opacity .25s ease,-webkit-transform .15s ease;transition:transform .15s ease,opacity .25s ease;transition:transform .15s ease,opacity .25s ease,-webkit-transform .15s ease;will-change:transform,opacity;top:0;left:0;z-index:3}.ce-inline-toolbar--left-oriented:before{left:15px;margin-left:0}.ce-inline-toolbar--right-oriented:before{left:auto;right:15px;margin-left:0}.ce-inline-toolbar--showed{opacity:1;visibility:visible;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.ce-inline-toolbar--left-oriented{-webkit-transform:translateX(-23px) translateY(8px) scale(.9);transform:translateX(-23px) translateY(8px) scale(.9)}.ce-inline-toolbar--left-oriented.ce-inline-toolbar--showed{-webkit-transform:translateX(-23px);transform:translateX(-23px)}.ce-inline-toolbar--right-oriented{-webkit-transform:translateX(-100%) translateY(8px) scale(.9);transform:translateX(-100%) translateY(8px) scale(.9);margin-left:23px}.ce-inline-toolbar--right-oriented.ce-inline-toolbar--showed{-webkit-transform:translateX(-100%);transform:translateX(-100%)}.ce-inline-toolbar [hidden]{display:none!important}.ce-inline-toolbar__toggler-and-button-wrapper{width:100%;padding:0 6px}.ce-inline-toolbar__buttons,.ce-inline-toolbar__toggler-and-button-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-inline-toolbar__dropdown{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;height:34px;padding:0 9px 0 10px;margin:0 6px 0 -6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;border-right:1px solid rgba(201,201,204,.48)}.ce-inline-toolbar__dropdown:hover{background:#eff2f5}.ce-inline-toolbar__dropdown--hidden{display:none}.ce-inline-toolbar__dropdown-content{display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:500;font-size:14px}.ce-inline-toolbar__dropdown-content svg{height:12px}.ce-inline-toolbar__dropdown .icon--toggler-down{margin-left:4px}.ce-inline-toolbar__shortcut{opacity:.6;word-spacing:-3px;margin-top:3px}.ce-inline-tool{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:34px;height:34px;line-height:34px;padding:0!important;text-align:center;border-radius:3px;cursor:pointer;border:0;outline:none;background-color:transparent;vertical-align:bottom;color:#000;margin:0}.ce-inline-tool:hover{background-color:#eff2f5}.ce-inline-tool{border-radius:0;line-height:normal;width:auto;padding:0 5px!important;min-width:24px}.ce-inline-tool--active{color:#388ae5}.ce-inline-tool--focused{-webkit-box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);background:rgba(34,186,255,.08)!important}.ce-inline-tool--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.ce-inline-tool:not(:last-of-type){margin-right:2px}.ce-inline-tool .icon{height:12px}.ce-inline-tool--link .icon--unlink,.ce-inline-tool--unlink .icon--link{display:none}.ce-inline-tool--unlink .icon--unlink{display:inline-block;margin-bottom:-1px}.ce-inline-tool-input{outline:none;border:0;border-radius:0 0 4px 4px;margin:0;font-size:13px;padding:10px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;display:none;font-weight:500;border-top:1px solid rgba(201,201,204,.48)}.ce-inline-tool-input::-webkit-input-placeholder{color:#707684}.ce-inline-tool-input::-moz-placeholder{color:#707684}.ce-inline-tool-input:-ms-input-placeholder{color:#707684}.ce-inline-tool-input::-ms-input-placeholder{color:#707684}.ce-inline-tool-input::placeholder{color:#707684}.ce-inline-tool-input--showed{display:block}.ce-conversion-toolbar{position:absolute;background-color:#fff;border:1px solid #e8e8eb;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px rgba(13,20,33,.13);border-radius:6px;z-index:2}@media (max-width:650px){.ce-conversion-toolbar{-webkit-box-shadow:0 8px 6px -6px rgba(33,48,73,.19);box-shadow:0 8px 6px -6px rgba(33,48,73,.19);border-bottom-color:#c7c7c7}}.ce-conversion-toolbar{opacity:0;visibility:hidden;will-change:transform,opacity;-webkit-transition:opacity .1s ease,-webkit-transform .1s ease;transition:opacity .1s ease,-webkit-transform .1s ease;transition:transform .1s ease,opacity .1s ease;transition:transform .1s ease,opacity .1s ease,-webkit-transform .1s ease;-webkit-transform:translateY(-8px);transform:translateY(-8px);left:-1px;width:150px;margin-top:5px;-webkit-box-sizing:content-box;box-sizing:content-box}.ce-conversion-toolbar--left-oriented:before{left:15px;margin-left:0}.ce-conversion-toolbar--right-oriented:before{left:auto;right:15px;margin-left:0}.ce-conversion-toolbar--showed{opacity:1;visibility:visible;-webkit-transform:none;transform:none}.ce-conversion-toolbar [hidden]{display:none!important}.ce-conversion-toolbar__buttons{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-conversion-toolbar__label{color:#707684;font-size:11px;font-weight:500;letter-spacing:.33px;padding:10px 10px 5px;text-transform:uppercase}.ce-conversion-tool{display:-webkit-box;display:-ms-flexbox;display:flex;padding:5px 10px;font-size:14px;line-height:20px;font-weight:500;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ce-conversion-tool--hidden{display:none}.ce-conversion-tool--focused{-webkit-box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);background:rgba(34,186,255,.08)!important}.ce-conversion-tool--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.ce-conversion-tool:hover{background:#eff2f5}.ce-conversion-tool__icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:20px;height:20px;border:1px solid rgba(201,201,204,.48);border-radius:3px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:10px;background:#fff}.ce-conversion-tool__icon svg{width:11px;height:11px}.ce-conversion-tool--last{margin-right:0!important}.ce-conversion-tool--active{color:#388ae5!important;-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.ce-settings{position:absolute;background-color:#fff;border:1px solid #e8e8eb;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px rgba(13,20,33,.13);border-radius:6px;z-index:2}@media (max-width:650px){.ce-settings{-webkit-box-shadow:0 8px 6px -6px rgba(33,48,73,.19);box-shadow:0 8px 6px -6px rgba(33,48,73,.19);border-bottom-color:#c7c7c7}}.ce-settings{top:34px;left:0;min-width:114px;-webkit-box-sizing:content-box;box-sizing:content-box}.ce-settings--left-oriented:before{left:15px;margin-left:0}.ce-settings--right-oriented:before{left:auto;right:15px;margin-left:0}@media (max-width:650px){.ce-settings{bottom:40px;right:auto;top:auto}}.ce-settings:before{left:auto;right:12px}@media (max-width:650px){.ce-settings:before{bottom:-5px;top:auto}}.ce-settings{display:none}.ce-settings--opened{display:block;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-name:panelShowing;animation-name:panelShowing}.ce-settings__plugin-zone:not(:empty){padding:3px 3px 0}.ce-settings__default-zone:not(:empty){padding:3px}.ce-settings__button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:34px;height:34px;line-height:34px;padding:0!important;text-align:center;border-radius:3px;cursor:pointer;border:0;outline:none;background-color:transparent;vertical-align:bottom;color:#000;margin:0}.ce-settings__button:hover{background-color:#eff2f5}.ce-settings__button--active{color:#388ae5}.ce-settings__button--focused{-webkit-box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);background:rgba(34,186,255,.08)!important}.ce-settings__button--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.ce-settings__button:not(:nth-child(3n+3)){margin-right:3px}.ce-settings__button:nth-child(n+4){margin-top:3px}.ce-settings__button{line-height:32px}.ce-settings__button--disabled{cursor:not-allowed!important;opacity:.3}.ce-settings__button--selected{color:#388ae5}.ce-settings__button--delete{-webkit-transition:background-color .3s ease;transition:background-color .3s ease;will-change:background-color}.ce-settings__button--delete .icon{-webkit-transition:-webkit-transform .2s ease-out;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out,-webkit-transform .2s ease-out;will-change:transform}.ce-settings__button--confirm{background-color:#e24a4a!important;color:#fff}.ce-settings__button--confirm:hover{background-color:#d54a4a!important}.ce-settings__button--confirm .icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}@-webkit-keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.ce-block{-webkit-animation:fade-in .3s ease;animation:fade-in .3s ease;-webkit-animation-fill-mode:none;-webkit-animation-fill-mode:initial;animation-fill-mode:none}.ce-block:first-of-type{margin-top:0}.ce-block--selected .ce-block__content{background:#e1f2ff}.ce-block--selected .ce-block__content [contenteditable]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ce-block--selected .ce-block__content .ce-stub,.ce-block--selected .ce-block__content img{opacity:.55}.ce-block--stretched .ce-block__content{max-width:none}.ce-block__content{position:relative;max-width:650px;margin:0 auto;-webkit-transition:background-color .15s ease;transition:background-color .15s ease}.ce-block--drop-target .ce-block__content:before{content:"";position:absolute;top:100%;left:-20px;margin-top:-1px;height:8px;width:8px;border:solid #388ae5;border-width:1px 1px 0 0;-webkit-transform-origin:right;transform-origin:right;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ce-block--drop-target .ce-block__content:after{content:"";position:absolute;top:100%;height:1px;width:100%;color:#388ae5;background:repeating-linear-gradient(90deg,#388ae5,#388ae5 1px,#fff 0,#fff 6px)}.ce-block a{cursor:pointer;text-decoration:underline}.ce-block b{font-weight:700}.ce-block i{font-style:italic}@media (min-width:651px){.codex-editor--narrow .ce-block--focused{margin-right:-50px;padding-right:50px}}.wobble{-webkit-animation-name:wobble;animation-name:wobble;-webkit-animation-duration:.4s;animation-duration:.4s}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-5%,0,0) rotate(-5deg);transform:translate3d(-5%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(2%,0,0) rotate(3deg);transform:translate3d(2%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-3%,0,0) rotate(-3deg);transform:translate3d(-3%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(2%,0,0) rotate(2deg);transform:translate3d(2%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-1%,0,0) rotate(-1deg);transform:translate3d(-1%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-5%,0,0) rotate(-5deg);transform:translate3d(-5%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(2%,0,0) rotate(3deg);transform:translate3d(2%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-3%,0,0) rotate(-3deg);transform:translate3d(-3%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(2%,0,0) rotate(2deg);transform:translate3d(2%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-1%,0,0) rotate(-1deg);transform:translate3d(-1%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}20%{-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}20%{-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes selectionBounce{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}50%{-webkit-transform:scale3d(1.01,1.01,1.01);transform:scale3d(1.01,1.01,1.01)}70%{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes selectionBounce{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}50%{-webkit-transform:scale3d(1.01,1.01,1.01);transform:scale3d(1.01,1.01,1.01)}70%{-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes buttonClicked{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.95,.95,.95);transform:scale3d(.95,.95,.95)}60%{-webkit-transform:scale3d(1.02,1.02,1.02);transform:scale3d(1.02,1.02,1.02)}80%{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes buttonClicked{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.95,.95,.95);transform:scale3d(.95,.95,.95)}60%{-webkit-transform:scale3d(1.02,1.02,1.02);transform:scale3d(1.02,1.02,1.02)}80%{-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes panelShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes panelShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes panelShowingMobile{0%{opacity:0;-webkit-transform:translateY(14px) scale(.98);transform:translateY(14px) scale(.98)}70%{opacity:1;-webkit-transform:translateY(-4px);transform:translateY(-4px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes panelShowingMobile{0%{opacity:0;-webkit-transform:translateY(14px) scale(.98);transform:translateY(14px) scale(.98)}70%{opacity:1;-webkit-transform:translateY(-4px);transform:translateY(-4px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.cdx-block{padding:.4em 0}.cdx-block::-webkit-input-placeholder{line-height:normal!important}.cdx-input{border:1px solid rgba(201,201,204,.48);-webkit-box-shadow:inset 0 1px 2px 0 rgba(35,44,72,.06);box-shadow:inset 0 1px 2px 0 rgba(35,44,72,.06);border-radius:3px;padding:10px 12px;outline:none;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.cdx-input[data-placeholder]:before{position:static!important;display:inline-block;width:0;white-space:nowrap;pointer-events:none}.cdx-settings-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:34px;height:34px;line-height:34px;padding:0!important;text-align:center;border-radius:3px;cursor:pointer;border:0;outline:none;background-color:transparent;vertical-align:bottom;color:#000;margin:0}.cdx-settings-button:hover{background-color:#eff2f5}.cdx-settings-button--focused{-webkit-box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);background:rgba(34,186,255,.08)!important}.cdx-settings-button--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.cdx-settings-button:not(:nth-child(3n+3)){margin-right:3px}.cdx-settings-button:nth-child(n+4){margin-top:3px}.cdx-settings-button--active{color:#388ae5}.cdx-loader{position:relative;border:1px solid rgba(201,201,204,.48)}.cdx-loader:before{content:"";position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-11px 0 0 -11px;border:2px solid rgba(201,201,204,.48);border-left-color:#388ae5;border-radius:50%;-webkit-animation:cdxRotation 1.2s linear infinite;animation:cdxRotation 1.2s linear infinite}@-webkit-keyframes cdxRotation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes cdxRotation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.cdx-button{padding:13px;border-radius:3px;border:1px solid rgba(201,201,204,.48);font-size:14.9px;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(18,30,57,.04);box-shadow:0 2px 2px 0 rgba(18,30,57,.04);color:#707684;text-align:center;cursor:pointer}.cdx-button:hover{background:#fbfcfe;-webkit-box-shadow:0 1px 3px 0 rgba(18,30,57,.08);box-shadow:0 1px 3px 0 rgba(18,30,57,.08)}.cdx-button svg{height:20px;margin-right:.2em;margin-top:-2px}.ce-stub{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;padding:3.5em 0;margin:17px 0;border-radius:3px;background:#fcf7f7;color:#b46262}.ce-stub__info{margin-left:20px}.ce-stub__title{margin-bottom:3px;font-weight:600;font-size:18px;text-transform:capitalize}.ce-stub__subtitle{font-size:16px}.codex-editor.codex-editor--rtl{direction:rtl}.codex-editor.codex-editor--rtl .cdx-list{padding-left:0;padding-right:40px}.codex-editor.codex-editor--rtl .ce-toolbar__plus{right:-26px;left:auto}.codex-editor.codex-editor--rtl .ce-toolbar__actions{right:auto;left:-26px}@media (max-width:650px){.codex-editor.codex-editor--rtl .ce-toolbar__actions{margin-left:0;margin-right:auto;padding-right:0;padding-left:10px}}.codex-editor.codex-editor--rtl .ce-settings{left:5px;right:auto}.codex-editor.codex-editor--rtl .ce-settings:before{right:auto;left:25px}.codex-editor.codex-editor--rtl .ce-settings__button:not(:nth-child(3n+3)){margin-left:3px;margin-right:0}.codex-editor.codex-editor--rtl .ce-conversion-tool__icon{margin-right:0;margin-left:10px}.codex-editor.codex-editor--rtl .ce-inline-toolbar__dropdown{border-right:0 solid transparent;border-left:1px solid rgba(201,201,204,.48);margin:0 -6px 0 6px}.codex-editor.codex-editor--rtl .ce-inline-toolbar__dropdown .icon--toggler-down{margin-left:0;margin-right:4px}@media (min-width:651px){.codex-editor--narrow.codex-editor--rtl .ce-toolbar__plus{left:0;right:5px}}@media (min-width:651px){.codex-editor--narrow.codex-editor--rtl .ce-toolbar__actions{left:-5px}}.ce-popover{opacity:0;will-change:opacity,transform;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:6px;min-width:200px;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;max-height:0;pointer-events:none;position:absolute;background-color:#fff;border:1px solid #e8e8eb;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px rgba(13,20,33,.13);border-radius:6px;z-index:2}@media (max-width:650px){.ce-popover{-webkit-box-shadow:0 8px 6px -6px rgba(33,48,73,.19);box-shadow:0 8px 6px -6px rgba(33,48,73,.19);border-bottom-color:#c7c7c7}}.ce-popover{z-index:4;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.ce-popover--left-oriented:before{left:15px;margin-left:0}.ce-popover--right-oriented:before{left:auto;right:15px;margin-left:0}.ce-popover--opened{opacity:1;max-height:270px;pointer-events:auto;-webkit-animation:panelShowing .1s ease;animation:panelShowing .1s ease}@media (max-width:650px){.ce-popover--opened{-webkit-animation:panelShowingMobile .25s ease;animation:panelShowingMobile .25s ease}}.ce-popover::-webkit-scrollbar{width:7px}.ce-popover::-webkit-scrollbar-thumb{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:inset 0 0 2px 2px #eff2f5;box-shadow:inset 0 0 2px 2px #eff2f5;border-color:transparent;border-style:solid;border-width:4px 3px 4px 0}@media (max-width:650px){.ce-popover{position:fixed;max-width:none;min-width:auto;left:5px;right:5px;bottom:calc(5px + env(safe-area-inset-bottom));top:auto;border-radius:10px}}.ce-popover__items{overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain}@media (min-width:651px){.ce-popover__items{margin-top:5px}}.ce-popover__item{display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start;white-space:nowrap;padding:3px;font-size:14px;line-height:20px;font-weight:500;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:6px}.ce-popover__item:not(:last-of-type){margin-bottom:1px}@media (hover:hover){.ce-popover__item:hover{background-color:#eff2f5}}@media (max-width:650px){.ce-popover__item{font-size:16px;padding:4px}}.ce-popover__item--focused{-webkit-box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px rgba(7,161,227,.08);background:rgba(34,186,255,.08)!important}.ce-popover__item--hidden{display:none}.ce-popover__item-icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:26px;height:26px;border:1px solid rgba(201,201,204,.48);border-radius:5px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;margin-right:10px}@media (max-width:650px){.ce-popover__item-icon{width:36px;height:36px;border-radius:8px}}.ce-popover__item-icon svg{width:12px;height:12px}.ce-popover__item-label:after{content:"";width:25px;display:inline-block}.ce-popover__item-secondary-label{color:#707684;font-size:12px;margin-left:auto;white-space:nowrap;letter-spacing:-.1em;padding-right:5px;margin-bottom:-2px;opacity:.6}@media (max-width:650px){.ce-popover__item-secondary-label{display:none}}.ce-popover__no-found{display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start;white-space:nowrap;padding:3px;font-size:14px;line-height:20px;font-weight:500;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:6px}.ce-popover__no-found:not(:last-of-type){margin-bottom:1px}@media (hover:hover){.ce-popover__no-found:hover{background-color:#eff2f5}}@media (max-width:650px){.ce-popover__no-found{font-size:16px;padding:4px}}.ce-popover__no-found{color:#707684;display:none;cursor:default}.ce-popover__no-found--shown{display:block}.ce-popover__no-found:hover{background-color:transparent}@media (max-width:650px){.ce-popover__overlay{position:fixed;top:0;bottom:0;left:0;right:0;background:#1d202b;opacity:.5;z-index:3;-webkit-transition:opacity .12s ease-in;transition:opacity .12s ease-in;will-change:opacity;visibility:visible}.ce-popover .cdx-search-field{display:none}}.ce-popover__overlay--hidden{z-index:0;opacity:0;visibility:hidden}.cdx-search-field{--icon-margin-right:10px;background:rgba(232,232,235,.49);border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:2px;display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto}.cdx-search-field__icon{width:26px;height:26px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:var(--icon-margin-right)}.cdx-search-field__icon .icon{width:14px;height:14px;color:#707684;-ms-flex-negative:0;flex-shrink:0}.cdx-search-field__input{font-size:14px;outline:none;font-weight:500;font-family:inherit;border:0;background:transparent;margin:0;padding:0;line-height:22px;min-width:calc(100% - 26px - var(--icon-margin-right))}.cdx-search-field__input::-webkit-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::-moz-placeholder{color:#707684;font-weight:500}.cdx-search-field__input:-ms-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::-ms-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::placeholder{color:#707684;font-weight:500}'},function(t,e,n){"use strict";n.r(e),n.d(e,"nanoid",(function(){return s})),n.d(e,"customAlphabet",(function(){return a})),n.d(e,"customRandom",(function(){return i})),n.d(e,"urlAlphabet",(function(){return o})),n.d(e,"random",(function(){return r}));let o="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let r=t=>crypto.getRandomValues(new Uint8Array(t)),i=(t,e,n)=>{let o=(2<{let i="";for(;;){let a=n(r),s=r;for(;s--;)if(i+=t[a[s]&o]||"",i.length===e)return i}}},a=(t,e)=>i(t,e,r),s=(t=21)=>{let e="",n=crypto.getRandomValues(new Uint8Array(t));for(;t--;){let o=63&n[t];e+=o<36?o.toString(36):o<62?(o-26).toString(36).toUpperCase():o<63?"_":"-"}return e}}])})); -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.InlineCode=e():t.InlineCode=e()}(window,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=0)}([function(t,e,n){function r(t,e){for(var n=0;n=0&&f.splice(e,1)}function b(t){var e=document.createElement("style");return void 0===t.attrs.type&&(t.attrs.type="text/css"),y(e,t.attrs),h(t,e),e}function y(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function g(t,e){var n,r,o,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var a=c++;n=u||(u=b(e)),r=x.bind(null,n,a,!1),o=x.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",y(e,t.attrs),h(t,e),e}(e),r=function(t,e,n){var r=n.css,o=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&o;(e.convertToAbsoluteUrls||i)&&(r=l(r));o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,e),o=function(){v(n),n.href&&URL.revokeObjectURL(n.href)}):(n=b(e),r=function(t,e){var n=e.css,r=e.media;r&&t.setAttribute("media",r);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),o=function(){v(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=d(t,e);return p(n,e),function(t){for(var r=[],o=0;o'},{number:2,tag:"H2",svg:''},{number:3,tag:"H3",svg:''},{number:4,tag:"H4",svg:''},{number:5,tag:"H5",svg:''},{number:6,tag:"H6",svg:''}];return this._settings.levels?t.filter((function(t){return e._settings.levels.includes(t.number)})):t}}])&&i(t.prototype,a),o&&i(t,o),e}();e.exports=a},function(e,t,n){var r=n(2);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(4)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(3)(!1)).push([e.i,"/**\n * Plugin styles\n */\n.ce-header {\n padding: 0.6em 0 3px;\n margin: 0;\n line-height: 1.25em;\n outline: none;\n}\n\n.ce-header p,\n.ce-header div{\n padding: 0 !important;\n margin: 0 !important;\n}\n\n/**\n * Styles for Plugin icon in Toolbar\n */\n.ce-header__icon {}\n\n.ce-header[contentEditable=true][data-placeholder]::before{\n position: absolute;\n content: attr(data-placeholder);\n color: #707684;\n font-weight: normal;\n display: none;\n cursor: text;\n}\n\n.ce-header[contentEditable=true][data-placeholder]:empty::before {\n display: block;\n}\n\n.ce-header[contentEditable=true][data-placeholder]:empty:focus::before {\n display: none;\n}\n",""])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var i=(o=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),a=r.sources.map((function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"}));return[n].concat(a).concat([i]).join("\n")}var o;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i=0&&f.splice(t,1)}function m(e){var t=document.createElement("style");return void 0===e.attrs.type&&(e.attrs.type="text/css"),b(t,e.attrs),p(e,t),t}function b(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function y(e,t){var n,r,i,a;if(t.transform&&e.css){if(!(a=t.transform(e.css)))return function(){};e.css=a}if(t.singleton){var o=u++;n=l||(l=m(t)),r=L.bind(null,n,o,!1),i=L.bind(null,n,o,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",b(t,e.attrs),p(e,t),t}(t),r=_.bind(null,n,t),i=function(){g(n),n.href&&URL.revokeObjectURL(n.href)}):(n=m(t),r=H.bind(null,n),i=function(){g(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=v(e,t);return h(n,t),function(e){for(var r=[],i=0;i'},{name:"stretched",icon:''},{name:"withBackground",icon:''}]}var e,n,o;return e=t,o=[{key:"sanitize",get:function(){return{url:{},withBorder:{},withBackground:{},stretched:{},caption:{br:!0}}}},{key:"isReadOnlySupported",get:function(){return!0}},{key:"pasteConfig",get:function(){return{patterns:{image:/https?:\/\/\S+\.(gif|jpe?g|tiff|png|webp)$/i},tags:["img"],files:{mimeTypes:["image/*"]}}}}],(n=[{key:"render",value:function(){var t=this,e=this._make("div",[this.CSS.baseClass,this.CSS.wrapper]),n=this._make("div",this.CSS.loading),r=this._make("div",this.CSS.imageHolder),i=this._make("img"),o=this._make("div",[this.CSS.input,this.CSS.caption],{contentEditable:!this.readOnly,innerHTML:this.data.caption||""});return o.dataset.placeholder="Enter a caption",e.appendChild(n),this.data.url&&(i.src=this.data.url),i.onload=function(){e.classList.remove(t.CSS.loading),r.appendChild(i),e.appendChild(r),e.appendChild(o),n.remove(),t._acceptTuneView()},i.onerror=function(t){console.log("Failed to load an image",t)},this.nodes.imageHolder=r,this.nodes.wrapper=e,this.nodes.image=i,this.nodes.caption=o,e}},{key:"save",value:function(t){var e=t.querySelector("img"),n=t.querySelector("."+this.CSS.input);return e?Object.assign(this.data,{url:e.src,caption:n.innerHTML}):this.data}},{key:"onDropHandler",value:function(t){var e=new FileReader;return e.readAsDataURL(t),new Promise(function(n){e.onload=function(e){n({url:e.target.result,caption:t.name})}})}},{key:"onPaste",value:function(t){var e=this;switch(t.type){case"tag":var n=t.detail.data;this.data={url:n.src};break;case"pattern":var r=t.detail.data;this.data={url:r};break;case"file":var i=t.detail.file;this.onDropHandler(i).then(function(t){e.data=t})}}},{key:"renderSettings",value:function(){var t=this,e=document.createElement("div");return this.settings.forEach(function(n){var r=document.createElement("div");r.classList.add(t.CSS.settingsButton),r.innerHTML=n.icon,r.addEventListener("click",function(){t._toggleTune(n.name),r.classList.toggle(t.CSS.settingsButtonActive)}),r.classList.toggle(t.CSS.settingsButtonActive,t.data[n.name]),e.appendChild(r)}),e}},{key:"_make",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=document.createElement(t);Array.isArray(n)?(e=o.classList).add.apply(e,r(n)):n&&o.classList.add(n);for(var a in i)o[a]=i[a];return o}},{key:"_toggleTune",value:function(t){this.data[t]=!this.data[t],this._acceptTuneView()}},{key:"_acceptTuneView",value:function(){var t=this;this.settings.forEach(function(e){t.nodes.imageHolder.classList.toggle(t.CSS.imageHolder+"--"+e.name.replace(/([A-Z])/g,function(t){return"-".concat(t[0].toLowerCase())}),!!t.data[e.name]),"stretched"===e.name&&t.api.blocks.stretchBlock(t.blockIndex,!!t.data.stretched)})}},{key:"data",get:function(){return this._data},set:function(t){this._data=Object.assign({},this.data,t),this.nodes.image&&(this.nodes.image.src=this.data.url),this.nodes.caption&&(this.nodes.caption.innerHTML=this.data.caption)}}])&&i(e.prototype,n),o&&i(e,o),t}();t.exports=o},function(t,e,n){var r=n(2);"string"==typeof r&&(r=[[t.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(4)(r,i);r.locals&&(t.exports=r.locals)},function(t,e,n){(t.exports=n(3)(!1)).push([t.i,".cdx-simple-image {}\n\n.cdx-simple-image .cdx-loader {\n min-height: 200px;\n}\n\n.cdx-simple-image .cdx-input {\n margin-top: 10px;\n}\n\n.cdx-simple-image img {\n max-width: 100%;\n vertical-align: bottom;\n}\n\n.cdx-simple-image__caption[contentEditable=true][data-placeholder]:empty::before {\n position: absolute;\n content: attr(data-placeholder);\n color: #707684;\n font-weight: normal;\n opacity: 0;\n }\n\n.cdx-simple-image__caption[contentEditable=true][data-placeholder]:empty::before {\n opacity: 1;\n}\n\n.cdx-simple-image__caption[contentEditable=true][data-placeholder]:empty:focus::before {\n opacity: 0;\n}\n\n\n.cdx-simple-image__picture--with-background {\n background: #eff2f5;\n padding: 10px;\n}\n\n.cdx-simple-image__picture--with-background img {\n display: block;\n max-width: 60%;\n margin: 0 auto;\n}\n\n.cdx-simple-image__picture--with-border {\n border: 1px solid #e8e8eb;\n padding: 1px;\n}\n\n.cdx-simple-image__picture--stretched img {\n max-width: none;\n width: 100%;\n}\n",""])},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var i=(a=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),o=r.sources.map(function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"});return[n].concat(o).concat([i]).join("\n")}var a;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},i=0;i=0&&u.splice(e,1)}function v(t){var e=document.createElement("style");return void 0===t.attrs.type&&(t.attrs.type="text/css"),g(e,t.attrs),h(t,e),e}function g(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function y(t,e){var n,r,i,o;if(e.transform&&t.css){if(!(o=e.transform(t.css)))return function(){};t.css=o}if(e.singleton){var a=l++;n=c||(c=v(e)),r=x.bind(null,n,a,!1),i=x.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",g(e,t.attrs),h(t,e),e}(e),r=function(t,e,n){var r=n.css,i=n.sourceMap,o=void 0===e.convertToAbsoluteUrls&&i;(e.convertToAbsoluteUrls||o)&&(r=d(r));i&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var a=new Blob([r],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,e),i=function(){m(n),n.href&&URL.revokeObjectURL(n.href)}):(n=v(e),r=function(t,e){var n=e.css,r=e.media;r&&t.setAttribute("media",r);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),i=function(){m(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else i()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=f(t,e);return p(n,e),function(t){for(var r=[],i=0;i'},{name:"center",icon:''}]}}],[{key:"isReadOnlySupported",get:function(){return!0}},{key:"toolbox",get:function(){return{icon:'',title:"Quote"}}},{key:"contentless",get:function(){return!0}},{key:"enableLineBreaks",get:function(){return!0}},{key:"DEFAULT_QUOTE_PLACEHOLDER",get:function(){return"Enter a quote"}},{key:"DEFAULT_CAPTION_PLACEHOLDER",get:function(){return"Enter a caption"}},{key:"ALIGNMENTS",get:function(){return{left:"left",center:"center"}}},{key:"DEFAULT_ALIGNMENT",get:function(){return t.ALIGNMENTS.left}},{key:"conversionConfig",get:function(){return{import:"text",export:function(t){return t.caption?"".concat(t.text," — ").concat(t.caption):t.text}}}}]),i(t,[{key:"render",value:function(){var t=this._make("blockquote",[this.CSS.baseClass,this.CSS.wrapper]),e=this._make("div",[this.CSS.input,this.CSS.text],{contentEditable:!this.readOnly,innerHTML:this.data.text}),n=this._make("div",[this.CSS.input,this.CSS.caption],{contentEditable:!this.readOnly,innerHTML:this.data.caption});return e.dataset.placeholder=this.quotePlaceholder,n.dataset.placeholder=this.captionPlaceholder,t.appendChild(e),t.appendChild(n),t}},{key:"save",value:function(t){var e=t.querySelector(".".concat(this.CSS.text)),n=t.querySelector(".".concat(this.CSS.caption));return Object.assign(this.data,{text:e.innerHTML,caption:n.innerHTML})}},{key:"renderSettings",value:function(){var t=this,e=this._make("div",[this.CSS.settingsWrapper],{});return this.settings.map(function(n){var r,o=t._make("div",t.CSS.settingsButton,{innerHTML:n.icon,title:"".concat((r=n.name,r[0].toUpperCase()+r.substr(1))," alignment")});return o.classList.toggle(t.CSS.settingsButtonActive,n.name===t.data.alignment),e.appendChild(o),o}).forEach(function(e,n,r){e.addEventListener("click",function(){t._toggleTune(t.settings[n].name),r.forEach(function(e,n){var r=t.settings[n].name;e.classList.toggle(t.CSS.settingsButtonActive,r===t.data.alignment)})})}),e}},{key:"_toggleTune",value:function(t){this.data.alignment=t}},{key:"_make",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=document.createElement(t);Array.isArray(n)?(e=i.classList).add.apply(e,r(n)):n&&i.classList.add(n);for(var a in o)i[a]=o[a];return i}}],[{key:"sanitize",get:function(){return{text:{br:!0},caption:{br:!0},alignment:{}}}}]),t}();t.exports=a},function(t,e,n){var r=n(2);"string"==typeof r&&(r=[[t.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(4)(r,o);r.locals&&(t.exports=r.locals)},function(t,e,n){(t.exports=n(3)(!1)).push([t.i,".cdx-quote-icon svg {\n transform: rotate(180deg);\n}\n\n.cdx-quote {\n margin: 0;\n}\n\n.cdx-quote__text {\n min-height: 158px;\n margin-bottom: 10px;\n}\n\n.cdx-quote__caption {}\n\n.cdx-quote [contentEditable=true][data-placeholder]::before{\n position: absolute;\n content: attr(data-placeholder);\n color: #707684;\n font-weight: normal;\n opacity: 0;\n}\n\n.cdx-quote [contentEditable=true][data-placeholder]:empty::before {\n opacity: 1;\n}\n\n.cdx-quote [contentEditable=true][data-placeholder]:empty:focus::before {\n opacity: 0;\n}\n\n\n.cdx-quote-settings {\n display: flex;\n}\n\n.cdx-quote-settings .cdx-settings-button {\n width: 50%;\n}\n",""])},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var o=(a=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),i=r.sources.map(function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"});return[n].concat(i).concat([o]).join("\n")}var a;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},o=0;o=0&&l.splice(e,1)}function v(t){var e=document.createElement("style");return void 0===t.attrs.type&&(t.attrs.type="text/css"),y(e,t.attrs),h(t,e),e}function y(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function m(t,e){var n,r,o,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var a=u++;n=c||(c=v(e)),r=w.bind(null,n,a,!1),o=w.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",y(e,t.attrs),h(t,e),e}(e),r=function(t,e,n){var r=n.css,o=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&o;(e.convertToAbsoluteUrls||i)&&(r=f(r));o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,e),o=function(){g(n),n.href&&URL.revokeObjectURL(n.href)}):(n=v(e),r=function(t,e){var n=e.css,r=e.media;r&&t.setAttribute("media",r);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),o=function(){g(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=d(t,e);return p(n,e),function(t){for(var r=[],o=0;o0;)t-=1,n=e.substr(t,1);return"\n"===n&&(t+=1),t}(a,o);if(" "!==a.substr(i," ".length))return;n.value=a.substring(0,i)+a.substring(i+" ".length),t=o-" ".length}else t=o+" ".length,n.value=a.substring(0,o)+" "+a.substring(o);n.setSelectionRange(t,t)}},{key:"data",get:function(){return this._data},set:function(e){this._data=e,this.nodes.textarea&&(this.nodes.textarea.textContent=e.code)}}],[{key:"toolbox",get:function(){return{icon:' ',title:"Code"}}},{key:"DEFAULT_PLACEHOLDER",get:function(){return"Enter a code"}},{key:"pasteConfig",get:function(){return{tags:["pre"]}}},{key:"sanitize",get:function(){return{code:!0}}}]),e}()}]).default})); -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.List=t():e.List=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=0)}([function(e,t,n){function r(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n ',default:"unordered"===r.defaultStyle||!1},{name:"ordered",title:this.api.i18n.t("Ordered"),icon:'',default:"ordered"===r.defaultStyle||!0}],this._data={style:this.settings.find((function(e){return!0===e.default})).name,items:[]},this.data=n}return o(e,null,[{key:"isReadOnlySupported",get:function(){return!0}},{key:"enableLineBreaks",get:function(){return!0}},{key:"toolbox",get:function(){return{icon:' ',title:"List"}}}]),o(e,[{key:"render",value:function(){var e=this;return this._elements.wrapper=this.makeMainTag(this._data.style),this._data.items.length?this._data.items.forEach((function(t){e._elements.wrapper.appendChild(e._make("li",e.CSS.item,{innerHTML:t}))})):this._elements.wrapper.appendChild(this._make("li",this.CSS.item)),this.readOnly||this._elements.wrapper.addEventListener("keydown",(function(t){switch(t.keyCode){case 13:e.getOutofList(t);break;case 8:e.backspace(t)}}),!1),this._elements.wrapper}},{key:"save",value:function(){return this.data}},{key:"renderSettings",value:function(){var e=this,t=this._make("div",[this.CSS.settingsWrapper],{});return this.settings.forEach((function(n){var r=e._make("div",e.CSS.settingsButton,{innerHTML:n.icon});r.addEventListener("click",(function(){e.toggleTune(n.name);var t=r.parentNode.querySelectorAll("."+e.CSS.settingsButton);Array.from(t).forEach((function(t){return t.classList.remove(e.CSS.settingsButtonActive)})),r.classList.toggle(e.CSS.settingsButtonActive)})),e.api.tooltip.onHover(r,n.title,{placement:"top",hidingDelay:500}),e._data.style===n.name&&r.classList.add(e.CSS.settingsButtonActive),t.appendChild(r)})),t}},{key:"onPaste",value:function(e){var t=e.detail.data;this.data=this.pasteHandler(t)}},{key:"makeMainTag",value:function(e){var t="ordered"===e?this.CSS.wrapperOrdered:this.CSS.wrapperUnordered,n="ordered"===e?"ol":"ul";return this._make(n,[this.CSS.baseBlock,this.CSS.wrapper,t],{contentEditable:!this.readOnly})}},{key:"toggleTune",value:function(e){for(var t=this.makeMainTag(e);this._elements.wrapper.hasChildNodes();)t.appendChild(this._elements.wrapper.firstChild);this._elements.wrapper.replaceWith(t),this._elements.wrapper=t,this._data.style=e}},{key:"_make",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=document.createElement(e);Array.isArray(n)?(t=a.classList).add.apply(t,r(n)):n&&a.classList.add(n);for(var o in i)a[o]=i[o];return a}},{key:"getOutofList",value:function(e){var t=this._elements.wrapper.querySelectorAll("."+this.CSS.item);if(!(t.length<2)){var n=t[t.length-1],r=this.currentItem;r!==n||n.textContent.trim().length||(r.parentElement.removeChild(r),this.api.blocks.insert(),this.api.caret.setToBlock(this.api.blocks.getCurrentBlockIndex()),e.preventDefault(),e.stopPropagation())}}},{key:"backspace",value:function(e){var t=this._elements.wrapper.querySelectorAll("."+this.CSS.item),n=t[0];n&&t.length<2&&!n.innerHTML.replace("
"," ").trim()&&e.preventDefault()}},{key:"selectItem",value:function(e){e.preventDefault();var t=window.getSelection(),n=t.anchorNode.parentNode.closest("."+this.CSS.item),r=new Range;r.selectNodeContents(n),t.removeAllRanges(),t.addRange(r)}},{key:"pasteHandler",value:function(e){var t,n=e.tagName;switch(n){case"OL":t="ordered";break;case"UL":case"LI":t="unordered"}var r={style:t,items:[]};if("LI"===n)r.items=[e.innerHTML];else{var i=Array.from(e.querySelectorAll("LI"));r.items=i.map((function(e){return e.innerHTML})).filter((function(e){return!!e.trim()}))}return r}},{key:"CSS",get:function(){return{baseBlock:this.api.styles.block,wrapper:"cdx-list",wrapperOrdered:"cdx-list--ordered",wrapperUnordered:"cdx-list--unordered",item:"cdx-list__item",settingsWrapper:"cdx-list-settings",settingsButton:this.api.styles.settingsButton,settingsButtonActive:this.api.styles.settingsButtonActive}}},{key:"data",set:function(e){e||(e={}),this._data.style=e.style||this.settings.find((function(e){return!0===e.default})).name,this._data.items=e.items||[];var t=this._elements.wrapper;t&&t.parentNode.replaceChild(this.render(),t)},get:function(){this._data.items=[];for(var e=this._elements.wrapper.querySelectorAll(".".concat(this.CSS.item)),t=0;t"," ").trim()&&this._data.items.push(e[t].innerHTML)}return this._data}},{key:"currentItem",get:function(){var e=window.getSelection().anchorNode;return e.nodeType!==Node.ELEMENT_NODE&&(e=e.parentNode),e.closest(".".concat(this.CSS.item))}}],[{key:"conversionConfig",get:function(){return{export:function(e){return e.items.join(". ")},import:function(e){return{items:[e],style:"unordered"}}}}},{key:"sanitize",get:function(){return{style:{},items:{br:!0}}}},{key:"pasteConfig",get:function(){return{tags:["OL","UL","LI"]}}}]),e}();e.exports=s},function(e,t,n){var r=n(2),i=n(3);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var a={insert:"head",singleton:!1};r(i,a);e.exports=i.locals||{}},function(e,t,n){"use strict";var r,i=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),o=[];function s(e){for(var t=-1,n=0;n',title:"Delimiter"}}}]),e}();e.exports=i},function(e,t,n){var r=n(2);"string"==typeof r&&(r=[[e.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(4)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(3)(!1)).push([e.i,'.ce-delimiter {\n line-height: 1.6em;\n width: 100%;\n text-align: center;\n}\n\n.ce-delimiter:before {\n display: inline-block;\n content: "***";\n font-size: 30px;\n line-height: 65px;\n height: 30px;\n letter-spacing: 0.2em;\n}',""])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(a=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),i=r.sources.map(function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"});return[n].concat(i).concat([o]).join("\n")}var a;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o=0&&f.splice(t,1)}function b(e){var t=document.createElement("style");return void 0===e.attrs.type&&(e.attrs.type="text/css"),y(t,e.attrs),h(e,t),t}function y(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n])})}function m(e,t){var n,r,o,i;if(t.transform&&e.css){if(!(i=t.transform(e.css)))return function(){};e.css=i}if(t.singleton){var a=c++;n=u||(u=b(t)),r=x.bind(null,n,a,!1),o=x.bind(null,n,a,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",y(t,e.attrs),h(e,t),t}(t),r=function(e,t,n){var r=n.css,o=n.sourceMap,i=void 0===t.convertToAbsoluteUrls&&o;(t.convertToAbsoluteUrls||i)&&(r=l(r));o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),s=e.href;e.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,t),o=function(){v(n),n.href&&URL.revokeObjectURL(n.href)}):(n=b(t),r=function(e,t){var n=t.css,r=t.media;r&&e.setAttribute("media",r);if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}.bind(null,n),o=function(){v(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=a()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=d(e,t);return p(n,t),function(e){for(var r=[],o=0;o',title:"Raw HTML"}}}]),o(e,[{key:"render",value:function(){var e=this,t=document.createElement("div");return this.textarea=document.createElement("textarea"),t.classList.add(this.CSS.baseClass,this.CSS.wrapper),this.textarea.classList.add(this.CSS.textarea,this.CSS.input),this.textarea.textContent=this.data.html,this.textarea.placeholder=this.placeholder,this.readOnly?this.textarea.disabled=!0:this.textarea.addEventListener("input",(function(){e.onInput()})),t.appendChild(this.textarea),setTimeout((function(){e.resize()}),100),t}},{key:"save",value:function(e){return{html:e.querySelector("textarea").value}}},{key:"onInput",value:function(){var e=this;this.resizeDebounce&&clearTimeout(this.resizeDebounce),this.resizeDebounce=setTimeout((function(){e.resize()}),200)}},{key:"resize",value:function(){this.textarea.style.height="auto",this.textarea.style.height=this.textarea.scrollHeight+"px"}}],[{key:"DEFAULT_PLACEHOLDER",get:function(){return"Enter HTML code"}},{key:"sanitize",get:function(){return{html:!0}}}]),e}()},function(e,t,n){var r=n(2);"string"==typeof r&&(r=[[e.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(4)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(3)(!1)).push([e.i,".ce-rawtool__textarea {\n min-height: 200px;\n resize: vertical;\n border-radius: 8px;\n border: 0;\n background-color: #1e2128;\n font-family: Menlo, Monaco, Consolas, Courier New, monospace;\n font-size: 12px;\n line-height: 1.6;\n letter-spacing: -0.2px;\n color: #a1a7b6;\n overscroll-behavior: contain;\n}\n",""])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(a=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),i=r.sources.map((function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"}));return[n].concat(i).concat([o]).join("\n")}var a;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o=0&&f.splice(t,1)}function y(e){var t=document.createElement("style");return void 0===e.attrs.type&&(e.attrs.type="text/css"),m(t,e.attrs),v(e,t),t}function m(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function g(e,t){var n,r,o,i;if(t.transform&&e.css){if(!(i=t.transform(e.css)))return function(){};e.css=i}if(t.singleton){var a=l++;n=c||(c=y(t)),r=L.bind(null,n,a,!1),o=L.bind(null,n,a,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",m(t,e.attrs),v(e,t),t}(t),r=j.bind(null,n,t),o=function(){b(n),n.href&&URL.revokeObjectURL(n.href)}):(n=y(t),r=S.bind(null,n),o=function(){b(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=a()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=h(e,t);return d(n,t),function(e){for(var r=[],o=0;o - - - - - - - - - - - diff --git a/nfp_moe_old/public/assets/img/favicon.png b/nfp_moe_old/public/assets/img/favicon.png deleted file mode 100644 index 667da1d..0000000 Binary files a/nfp_moe_old/public/assets/img/favicon.png and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/heart.jpg b/nfp_moe_old/public/assets/img/heart.jpg deleted file mode 100644 index cb6daf3..0000000 Binary files a/nfp_moe_old/public/assets/img/heart.jpg and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/heart.png b/nfp_moe_old/public/assets/img/heart.png deleted file mode 100644 index 5693166..0000000 Binary files a/nfp_moe_old/public/assets/img/heart.png and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/heart.psd b/nfp_moe_old/public/assets/img/heart.psd deleted file mode 100644 index fd2e53c..0000000 Binary files a/nfp_moe_old/public/assets/img/heart.psd and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/heart.xcf b/nfp_moe_old/public/assets/img/heart.xcf deleted file mode 100644 index 4bdfb6e..0000000 Binary files a/nfp_moe_old/public/assets/img/heart.xcf and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/login.png b/nfp_moe_old/public/assets/img/login.png deleted file mode 100644 index f712dc3..0000000 Binary files a/nfp_moe_old/public/assets/img/login.png and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/logo.avif b/nfp_moe_old/public/assets/img/logo.avif deleted file mode 100644 index 7d76c35..0000000 Binary files a/nfp_moe_old/public/assets/img/logo.avif and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/logo.jpg b/nfp_moe_old/public/assets/img/logo.jpg deleted file mode 100644 index 6d506b5..0000000 Binary files a/nfp_moe_old/public/assets/img/logo.jpg and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/logo.png b/nfp_moe_old/public/assets/img/logo.png deleted file mode 100644 index 48ed4d8..0000000 Binary files a/nfp_moe_old/public/assets/img/logo.png and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/logo_small.jpg b/nfp_moe_old/public/assets/img/logo_small.jpg deleted file mode 100644 index eba88dd..0000000 Binary files a/nfp_moe_old/public/assets/img/logo_small.jpg and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/tsun.avif b/nfp_moe_old/public/assets/img/tsun.avif deleted file mode 100644 index 5d53ed3..0000000 Binary files a/nfp_moe_old/public/assets/img/tsun.avif and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/tsun.jpg b/nfp_moe_old/public/assets/img/tsun.jpg deleted file mode 100644 index 095cb89..0000000 Binary files a/nfp_moe_old/public/assets/img/tsun.jpg and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/tsun.png b/nfp_moe_old/public/assets/img/tsun.png deleted file mode 100644 index da9f179..0000000 Binary files a/nfp_moe_old/public/assets/img/tsun.png and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/tsun_small.jpg b/nfp_moe_old/public/assets/img/tsun_small.jpg deleted file mode 100644 index 011739f..0000000 Binary files a/nfp_moe_old/public/assets/img/tsun_small.jpg and /dev/null differ diff --git a/nfp_moe_old/public/assets/img/upload.svg b/nfp_moe_old/public/assets/img/upload.svg deleted file mode 100644 index 2ff44ab..0000000 --- a/nfp_moe_old/public/assets/img/upload.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/nfp_moe_old/public/assets/inter.css b/nfp_moe_old/public/assets/inter.css deleted file mode 100644 index f450010..0000000 --- a/nfp_moe_old/public/assets/inter.css +++ /dev/null @@ -1,200 +0,0 @@ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100; - font-display: swap; - src: url("Inter-Thin.woff2?v=3.19") format("woff2"), - url("Inter-Thin.woff?v=3.19") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100; - font-display: swap; - src: url("Inter-ThinItalic.woff2?v=3.19") format("woff2"), - url("Inter-ThinItalic.woff?v=3.19") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 200; - font-display: swap; - src: url("Inter-ExtraLight.woff2?v=3.19") format("woff2"), - url("Inter-ExtraLight.woff?v=3.19") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 200; - font-display: swap; - src: url("Inter-ExtraLightItalic.woff2?v=3.19") format("woff2"), - url("Inter-ExtraLightItalic.woff?v=3.19") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 300; - font-display: swap; - src: url("Inter-Light.woff2?v=3.19") format("woff2"), - url("Inter-Light.woff?v=3.19") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 300; - font-display: swap; - src: url("Inter-LightItalic.woff2?v=3.19") format("woff2"), - url("Inter-LightItalic.woff?v=3.19") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url("Inter-Regular.woff2?v=3.19") format("woff2"), - url("Inter-Regular.woff?v=3.19") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url("Inter-Italic.woff2?v=3.19") format("woff2"), - url("Inter-Italic.woff?v=3.19") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url("Inter-Medium.woff2?v=3.19") format("woff2"), - url("Inter-Medium.woff?v=3.19") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url("Inter-MediumItalic.woff2?v=3.19") format("woff2"), - url("Inter-MediumItalic.woff?v=3.19") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 600; - font-display: swap; - src: url("Inter-SemiBold.woff2?v=3.19") format("woff2"), - url("Inter-SemiBold.woff?v=3.19") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 600; - font-display: swap; - src: url("Inter-SemiBoldItalic.woff2?v=3.19") format("woff2"), - url("Inter-SemiBoldItalic.woff?v=3.19") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url("Inter-Bold.woff2?v=3.19") format("woff2"), - url("Inter-Bold.woff?v=3.19") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url("Inter-BoldItalic.woff2?v=3.19") format("woff2"), - url("Inter-BoldItalic.woff?v=3.19") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 800; - font-display: swap; - src: url("Inter-ExtraBold.woff2?v=3.19") format("woff2"), - url("Inter-ExtraBold.woff?v=3.19") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 800; - font-display: swap; - src: url("Inter-ExtraBoldItalic.woff2?v=3.19") format("woff2"), - url("Inter-ExtraBoldItalic.woff?v=3.19") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 900; - font-display: swap; - src: url("Inter-Black.woff2?v=3.19") format("woff2"), - url("Inter-Black.woff?v=3.19") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 900; - font-display: swap; - src: url("Inter-BlackItalic.woff2?v=3.19") format("woff2"), - url("Inter-BlackItalic.woff?v=3.19") format("woff"); -} - -/* ------------------------------------------------------- -Variable font. -Usage: - - html { font-family: 'Inter', sans-serif; } - @supports (font-variation-settings: normal) { - html { font-family: 'Inter var', sans-serif; } - } -*/ -@font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; - font-style: normal; - font-named-instance: 'Regular'; - src: url("Inter-roman.var.woff2?v=3.19") format("woff2"); -} -@font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; - font-style: italic; - font-named-instance: 'Italic'; - src: url("Inter-italic.var.woff2?v=3.19") format("woff2"); -} - - -/* -------------------------------------------------------------------------- -[EXPERIMENTAL] Multi-axis, single variable font. - -Slant axis is not yet widely supported (as of February 2019) and thus this -multi-axis single variable font is opt-in rather than the default. - -When using this, you will probably need to set font-variation-settings -explicitly, e.g. - - * { font-variation-settings: "slnt" 0deg } - .italic { font-variation-settings: "slnt" 10deg } - -*/ -@font-face { - font-family: 'Inter var experimental'; - font-weight: 100 900; - font-display: swap; - font-style: oblique 0deg 10deg; - src: url("Inter.var.woff2?v=3.19") format("woff2"); -} diff --git a/nfp_moe_old/public/index.html b/nfp_moe_old/public/index.html deleted file mode 100644 index aef6b53..0000000 --- a/nfp_moe_old/public/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {{=headerTitle}} - - - - - - - - - - {{? headerImage === '/assets/img/heart.jpg' }} - - - {{? }} - - - - - - - -
- -
-
-
- - - diff --git a/nfp_moe_old/public/robots.txt b/nfp_moe_old/public/robots.txt deleted file mode 100644 index 14267e9..0000000 --- a/nfp_moe_old/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Allow: / \ No newline at end of file diff --git a/old/access/index.mjs b/old/access/index.mjs deleted file mode 100644 index 69961c8..0000000 --- a/old/access/index.mjs +++ /dev/null @@ -1,29 +0,0 @@ -import _ from 'lodash' - -const levels = { - Normal: 1, - Manager: 10, - Admin: 100, -} - -levels.is = function is(ctx, level) { - if (!_.isInteger(level)) throw new Error('AccessLevelDenied') - if (!ctx.state.user || !ctx.state.user.level) return false - if (ctx.state.user.level !== level) return false - return true -} - -levels.atLeast = function atLeast(ctx, level) { - if (!_.isInteger(level)) throw new Error('AccessLevelDenied') - if (!ctx.state.user || !ctx.state.user.level) return false - if (ctx.state.user.level < level) return false - return true -} - -levels.ensure = function ensure(ctx, level) { - if (!levels.atLeast(ctx, level)) { - throw new Error('AccessLevelDenied') - } -} - -export default levels diff --git a/old/access/middleware.mjs b/old/access/middleware.mjs deleted file mode 100644 index 2f83eb2..0000000 --- a/old/access/middleware.mjs +++ /dev/null @@ -1,33 +0,0 @@ -import orgAccess from './index.mjs' - -export function accessChecks(opts = { }) { - const access = opts.access || orgAccess - - return (ctx, next) => { - ctx.state.is = access.is.bind(access, ctx) - ctx.state.atLeast = access.atLeast.bind(access, ctx) - ctx.state.ensure = access.ensure.bind(access, ctx) - - return next() - } -} - -export function restrict(level = orgAccess.Normal) { - return async (ctx, next) => { - if (!ctx.headers.authorization && !ctx.query.token) { - return ctx.throw(403, 'Authentication token was not found (did you forget to login?)') - } - - if (!ctx.state.user || !ctx.state.user.email || !ctx.state.user.level) { - return ctx.throw(403, 'You must be authenticated to access this resource') - } - - if (!ctx.state.atLeast(level)) { - return ctx.throw(403, 'You do not have enough access to access this resource') - } - - if (next) { - return next() - } - } -} diff --git a/old/article/model.mjs b/old/article/model.mjs deleted file mode 100644 index ffaa29f..0000000 --- a/old/article/model.mjs +++ /dev/null @@ -1,159 +0,0 @@ -import { createPrototype, safeColumns } from '../knex.mjs' -import Media from '../media/model.mjs' -import File from '../file/model.mjs' -import Staff from '../staff/model.mjs' -import Page from '../page/model.mjs' - -/* - -Article model: -{ - name, - path, - description, - media_id, - staff_id, - parent_id, - is_deleted, - created_at, - updated_at, -} - -*/ - -function ArticleItem(data) { - Object.assign(this, data) -} - -function Article() { - this.tableName = 'articles' - this.Model = ArticleItem - this.includes = { - staff: Staff.includeHasOne('articles.staff_id', 'id'), - media: Media.includeHasOne('articles.media_id', 'id'), - banner: Media.includeHasOne('articles.banner_id', 'id'), - parent: Page.includeHasOne('articles.parent_id', 'id'), - files: File.includeHasMany('article_id', 'articles.id'), - } - this.publicFields = this.privateFields = safeColumns([ - 'staff_id', - 'parent_id', - 'name', - 'path', - 'description', - 'banner_id', - 'media_id', - 'published_at', - 'is_featured', - ]) - this.init() -} - -Article.prototype = createPrototype({ - getAll(ctx, where = null, includes = [], orderBy = 'id', limitToday = false) { - return this._getAll(ctx, (qb) => { - if (where) qb.where(where) - if (limitToday) { - qb.where(this.tableName + '.published_at', '<=', (new Date()).toISOString()) - } - }, includes, orderBy, []) - }, - - getAllFromPage(ctx, pageId, includes = [], orderBy = 'id', limitToday = false) { - return this._getAll(ctx, (qb) => { - qb = qb.innerJoin('pages', 'articles.parent_id', 'pages.id') - qb.where(subq => { - subq.where('pages.id', pageId) - .orWhere('pages.parent_id', pageId) - }) - if (limitToday) { - qb.where(this.tableName + '.published_at', '<=', (new Date()).toISOString()) - } - return qb - }, includes, orderBy, []) - }, - - getSingle(id, includes = [], require = true, ctx = null, limitToday = false) { - return this._getSingle(qb => { - qb.where(subq => { - subq.where(this.tableName + '.id', '=', Number(id) || 0) - .orWhere(this.tableName + '.path', '=', id) - }) - if (limitToday && (!ctx || !ctx.state.user || ctx.state.user.level < 10)) { - qb.where(this.tableName + '.published_at', '<=', (new Date()).toISOString()) - } - }, includes, require, ctx) - }, - - getFeaturedArticle(includes = [], ctx = null) { - return this._getSingle(qb => { - qb.where({ is_featured: true }) - .where(this.tableName + '.published_at', '<=', (new Date()).toISOString()) - .orderBy(this.tableName + '.published_at', 'DESC') - .select(this.knex.raw('1 as __group')) - .limit(1) - }, includes, false, ctx) - }, - - async getFrontpageArticles(orgPage = 1) { - let page = Math.max(orgPage, 1) - let out = { - featured: null, - items: [], - total: 0, - } - - let qFeatured = this.query(qb => { - return qb.where({ is_featured: true }) - .where(this.tableName + '.published_at', '<=', (new Date()).toISOString()) - .orderBy(this.tableName + '.published_at', 'DESC') - .select(this.knex.raw('1 as __group')) - .limit(1) - }, ['staff', 'media', 'banner']) - let qArticles = this.query(qb => { - return qb - .where(this.tableName + '.published_at', '<=', (new Date()).toISOString()) - .select(this.knex.raw('2 as __group')) - .orderBy(this.tableName + '.published_at', 'DESC') - .limit(10) - .offset((page - 1) * 10) - }, ['staff', 'media', 'banner'], null, qFeatured) - - let [articles, total] = await Promise.all([ - this.getAllQuery( - this.knex - .unionAll(qFeatured, true) - .unionAll(qArticles, true), - qFeatured - ), - this.knex('articles') - .where(this.tableName + '.published_at', '<=', (new Date()).toISOString()) - .where({ is_deleted: false }) - .count('* as count'), - ]) - - out.total = total[0].count - if (articles.length > 0 && articles[0].is_featured) { - out.featured = articles[0] - out.items = articles.slice(1) - } else { - out.items = articles - } - return out - }, - - setAllUnfeatured() { - return knex('articles') - .where({ is_featured: true }) - .update({ - is_featured: false, - }) - }, -}) - -const articleInstance = new Article() - -// Hook into includes for Page -// Page.addInclude('news', articleInstance.includeHasMany('parent_id', 'pages.id')) - -export default articleInstance diff --git a/old/article/routes.mjs b/old/article/routes.mjs deleted file mode 100644 index 941c4bf..0000000 --- a/old/article/routes.mjs +++ /dev/null @@ -1,77 +0,0 @@ -import Article from './model.mjs' -import * as security from './security.mjs' - -export default class ArticleRoutes { - constructor(opts = {}) { - Object.assign(this, { - Article: opts.Article || Article, - security: opts.security || security, - }) - } - - /** GET: /api/articles */ - async getAllArticles(ctx) { - await this.security.ensureIncludes(ctx) - - ctx.body = await this.Article.getAll(ctx, { }, ctx.state.filter.includes, ctx.query.sort || '-published_at') - } - - /** GET: /api/articles/:id */ - async getSingleArticle(ctx) { - await this.security.ensureIncludes(ctx) - - ctx.body = await this.Article.getSingle(ctx.params.id, ctx.state.filter.includes, true, ctx) - } - - /** GET: /api/articles/public */ - async getPublicAllArticles(ctx) { - await this.security.ensureIncludes(ctx) - - ctx.body = await this.Article.getAll(ctx, { }, ctx.state.filter.includes, ctx.query.sort || '-published_at', true) - } - - /** GET: /api/pages/:pageId/articles/public */ - async getPublicAllPageArticles(ctx) { - await this.security.ensureIncludes(ctx) - - ctx.body = await this.Article.getAllFromPage(ctx, ctx.params.pageId, ctx.state.filter.includes, ctx.query.sort || '-published_at', true) - } - - /** GET: /api/articles/public/:id */ - async getPublicSingleArticle(ctx) { - await this.security.ensureIncludes(ctx) - - ctx.body = await this.Article.getSingle(ctx.params.id, ctx.state.filter.includes, true, ctx, true) - } - - /** POST: /api/articles */ - async createArticle(ctx) { - await this.security.validUpdate(ctx) - - if (!ctx.request.body.staff_id) { - ctx.request.body.staff_id = ctx.state.user.id - } - - ctx.body = await this.Article.create(ctx.request.body) - } - - /** PUT: /api/articles/:id */ - async updateArticle(ctx) { - await this.security.validUpdate(ctx) - - if (ctx.request.body.is_featured) { - await Article.setAllUnfeatured() - } - - let article = await this.Article.updateSingle(ctx, ctx.params.id, ctx.request.body) - - ctx.body = article - } - - /** DELETE: /api/articles/:id */ - async removeArticle(ctx) { - await this.Article.updateSingle(ctx, ctx.params.id, { is_deleted: true }) - - ctx.status = 204 - } -} diff --git a/old/article/security.mjs b/old/article/security.mjs deleted file mode 100644 index 10e33c8..0000000 --- a/old/article/security.mjs +++ /dev/null @@ -1,44 +0,0 @@ -import filter from '../filter.mjs' - -const requiredFields = [ - 'name', - 'path', -] - -const validFields = [ - 'name', - 'path', - 'staff_id', - 'description', - 'parent_id', - 'media_id', - 'banner_id', - 'published_at', - 'is_featured', -] - -export async function ensureIncludes(ctx) { - let out = filter(ctx.state.filter.includes, ['staff', 'media', 'parent', 'banner', 'files']) - - if (out.length > 0) { - ctx.throw(422, `Includes had following invalid values: ${out.join(', ')}`) - } -} - -export async function validUpdate(ctx) { - requiredFields.forEach(item => { - if (ctx.request.body[item] == null) { - ctx.throw(422, `Property was missing: ${item}`) - } - }) - - let out = filter(Object.keys(ctx.request.body), validFields) - - if (out.length > 0) { - ctx.throw(422, `Body had following invalid properties: ${out.join(', ')}`) - } - - if (ctx.request.body.published_at) { - ctx.request.body.published_at = new Date(ctx.request.body.published_at) - } -} diff --git a/old/authentication/helper.mjs b/old/authentication/helper.mjs deleted file mode 100644 index 6eceaa2..0000000 --- a/old/authentication/helper.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import Staff from '../staff/model.mjs' -import Jwt from '../jwt.mjs' - -export default class AuthHelper { - constructor(opts = {}) { - Object.assign(this, { - Staff: opts.Staff || Staff, - jwt: opts.jwt || new Jwt(), - }) - } - - async loginStaff(ctx) { - let staff - - try { - staff = await this.Staff - .getSingleQuery( - this.Staff.query(qb => qb.where({ email: ctx.request.body.username }), [], ['*']), - true - ) - - await this.Staff.compare(ctx.request.body.password, staff.password) - } catch (err) { - if (err.message === 'EmptyResponse' || err.message === 'PasswordMismatch') { - ctx.throw(422, 'The email or password did not match') - } - throw err - } - - return this.jwt.createToken(staff.id, staff.email, staff.level) - } -} diff --git a/old/authentication/routes.mjs b/old/authentication/routes.mjs deleted file mode 100644 index 47cb022..0000000 --- a/old/authentication/routes.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import Staff from '../staff/model.mjs' -import Jwt from '../jwt.mjs' -import * as security from './security.mjs' -import AuthHelper from './helper.mjs' - -export default class AuthRoutes { - constructor(opts = {}) { - Object.assign(this, { - helper: opts.helper || new AuthHelper(), - Staff: opts.Staff || Staff, - jwt: opts.jwt || new Jwt(), - security: opts.security || security, - }) - } - - /* - * POST /api/login/user - Authenticate a user using password login - * - * @body {string} username - Username - * @body {string} password - Password - * @returns - * - * { token: 'Authentication token' } - */ - async loginUser(ctx) { - this.security.isValidLogin(ctx, ctx.request.body) - - let token = await this.helper.loginStaff(ctx) - - ctx.body = { token } - } -} diff --git a/old/authentication/security.mjs b/old/authentication/security.mjs deleted file mode 100644 index 61f4216..0000000 --- a/old/authentication/security.mjs +++ /dev/null @@ -1,18 +0,0 @@ - -export function isValidLogin(ctx, body) { - if (!body.username) { - ctx.throw(422, 'Body was missing property username') - } - - if (!body.password) { - ctx.throw(422, 'Body was missing property password') - } - - if (typeof body.password !== 'string') { - ctx.throw(422, 'Property password must be a string') - } - - if (typeof body.username !== 'string') { - ctx.throw(422, 'Property username must be a string') - } -} diff --git a/old/error/middleware.mjs b/old/error/middleware.mjs deleted file mode 100644 index 515ed97..0000000 --- a/old/error/middleware.mjs +++ /dev/null @@ -1,31 +0,0 @@ -import createError from 'http-errors' - -export function errorHandler() { - return async (ctx, next) => { - try { - await next() - } catch (org) { - let error = org - if (error.message === 'EmptyResponse') { - error = createError(404) - } else if (error.message === 'AccessLevelDenied') { - error = createError(403) - } - - if (!error.status) { - ctx.log.error(error) - error = createError(500, `Unknown error occured: ${error.message}`) - ctx.log.warn(error) - } else { - ctx.log.warn(error) - } - - ctx.status = error.status - ctx.body = { - status: error.status, - message: error.message, - body: error.body || { }, - } - } - } -} diff --git a/old/file/model.mjs b/old/file/model.mjs deleted file mode 100644 index 67cdf5d..0000000 --- a/old/file/model.mjs +++ /dev/null @@ -1,59 +0,0 @@ -import { createPrototype, safeColumns } from '../knex.mjs' -import config from '../config.mjs' - -/* - -File model: -{ - filename, - filetype, - size, - path, - staff_id, - article_id, - is_deleted, - created_at, - updated_at, - *url, - *magnet, -} - -*/ - -const baseUrl = config.get('upload:baseurl') - -function FileItem(data) { - Object.assign(this, data) - this.url = `${baseUrl}${this.path}` - - let meta = this.meta - if (!meta.torrent) { - this.magnet = '' - } else { - this.magnet = 'magnet:?' - + 'xl=' + this.size - + '&dn=' + encodeURIComponent(meta.torrent.name) - + '&xt=urn:btih:' + meta.torrent.hash - + meta.torrent.announce.map(item => ('&tr=' + encodeURIComponent(item))).join('') - } -} - -function File() { - this.tableName = 'files' - this.Model = FileItem - this.publicFields = this.privateFields = safeColumns([ - 'article_id', - 'filename', - 'filetype', - 'path', - 'size', - 'staff_id', - 'meta', - ]) - this.init() -} - -File.prototype = createPrototype({ -}) - -export default new File() diff --git a/old/file/routes.mjs b/old/file/routes.mjs deleted file mode 100644 index d880e37..0000000 --- a/old/file/routes.mjs +++ /dev/null @@ -1,61 +0,0 @@ -import { readFile } from 'fs' -import parseTorrent from 'parse-torrent' - -import config from '../config.mjs' -import File from './model.mjs' -import * as multer from '../multer.mjs' -import { uploadFile } from '../media/upload.mjs' -import Jwt from '../jwt.mjs' - -export default class FileRoutes { - constructor(opts = {}) { - Object.assign(this, { - File: opts.File || File, - multer: opts.multer || multer, - jwt: opts.jwt || new Jwt(), - uploadFile: opts.uploadFile || uploadFile, - }) - } - - async upload(ctx) { - let result = await this.multer.processBody(ctx) - - let token = this.jwt.signDirect({ site: config.get('upload:name') }, config.get('upload:secret')) - let meta = {} - - if (result.originalname.endsWith('.torrent')) { - let fileContent = await new Promise((res, rej) => { - readFile(result.path, (err, data) => { - if (err) return rej(err) - res(data) - }) - }) - let torrent = parseTorrent(fileContent) - meta = { - torrent: { - name: torrent.name, - announce: torrent.announce, - hash: torrent.infoHash, - files: torrent.files.map(file => ({ name: file.name, size: file.length })), - }, - } - } - - let file = await this.uploadFile(token, result.path) - ctx.body = await this.File.create({ - filename: result.originalname, - filetype: result.mimetype, - path: file.path, - article_id: ctx.params.articleId, - size: result.size, - staff_id: ctx.state.user.id, - meta: meta, - }) - } - - async removeFile(ctx) { - await this.File.updateSingle(ctx, ctx.params.id, { is_deleted: true }) - - ctx.status = 200 - } -} diff --git a/old/filter.mjs b/old/filter.mjs deleted file mode 100644 index 4613183..0000000 --- a/old/filter.mjs +++ /dev/null @@ -1,8 +0,0 @@ - -export default function filter(input = [], itemFilter = []) { - if (input && input.length) { - let out = input.filter(item => item && itemFilter.indexOf(item) < 0) - return out - } - return [] -} diff --git a/old/index/routes.mjs b/old/index/routes.mjs deleted file mode 100644 index f51289e..0000000 --- a/old/index/routes.mjs +++ /dev/null @@ -1,9 +0,0 @@ -export default class IndexRoutes { - constructor(opts = {}) { - this.indexBody = '' - } - - async sendIndex(ctx) { - ctx.body = this.indexBody - } -} diff --git a/old/jwt.mjs b/old/jwt.mjs deleted file mode 100644 index 030aa3f..0000000 --- a/old/jwt.mjs +++ /dev/null @@ -1,68 +0,0 @@ -import _ from 'lodash' -import jwt from 'jsonwebtoken' -import koaJwt from 'koa-jwt' -import config from './config.mjs' - -export default class Jwt { - constructor(opts = {}) { - Object.assign(this, { - jwt: opts.jwt || jwt, - }) - } - - sign(value, appendSecret = '', opts) { - let secret = config.get('jwt:secret') + appendSecret - let options = _.defaults(opts, config.get('jwt:options')) - - if (options.expiresIn === null) { - delete options.expiresIn - } - - return this.jwt.sign(value, secret, options) - } - - signDirect(value, secret) { - return this.jwt.sign(value, secret) - } - - verify(token, appendSecret = '') { - let secret = config.get('jwt:secret') + appendSecret - - return new Promise((resolve, reject) => - this.jwt.verify(token, secret, (err, res) => { - if (err) return reject(err) - - resolve(res) - }) - ) - } - - decode(token) { - return this.jwt.decode(token) - } - - createToken(id, email, level, opts) { - return this.sign({ - id: id, - email: email, - level: level, - }, email, opts) - } - - static jwtMiddleware() { - return koaJwt({ - getToken: ctx => { - if (ctx.request.header.authorization) { - return ctx.request.header.authorization.split(' ')[1] - } - if (ctx.query.token) { - return ctx.query.token - } - return null - }, - secret: (header, payload) => - `${config.get('jwt:secret')}${payload.email}`, - passthrough: true, - }) - } -} diff --git a/old/knex.mjs b/old/knex.mjs deleted file mode 100644 index b345d1d..0000000 --- a/old/knex.mjs +++ /dev/null @@ -1,425 +0,0 @@ -import _ from 'lodash' -import knexCore from 'knex-core' - -import config from './config.mjs' -import defaults from './defaults.mjs' - -const knex = knexCore(config.get('knex')) - -const functionMap = new Map() -let joinPostFix = 1 - -// Helper method to create models -export function createPrototype(opts) { - return defaults(opts, { - knex: knex, - - init() { - if (!this.tableName) throw new Error('createModel was called with missing tableName') - if (!this.Model) throw new Error('createModel was called with missing Model') - - if (!this.includes) this.includes = {} - if (!this.publicFields) throw new Error(this.tableName + ' was missing publicFields') - if (!this.privateFields) throw new Error(this.tableName + ' was missing privateFields') - - this.__includeFields = this.publicFields.map(x => x) - - this.publicFields = this.publicFields.map(x => `${this.tableName}.${x} as ${this.tableName}.${x}`) - if (this.publicFields !== this.privateFields) { - this.privateFields = this.privateFields.map(x => `${this.tableName}.${x} as ${this.tableName}.${x}`) - } - }, - - addInclude(name, include) { - this.includes[name] = include - }, - - _includeBase(type, subq) { - let self = this - let postfix = '_' + joinPostFix++ - let table = this.tableName + postfix - return { - type: type, - postfix: postfix, - table: table, - fields: this.__includeFields.map(x => `${table}.${x} as ${table}.${x}`), - model: self, - qb: function(qb) { - return subq(self, table, qb) - } - } - }, - - includeHasOne(source_id, target_id) { - return this._includeBase(1, function(self, table, qb) { - return qb.leftOuterJoin(`${self.tableName} as ${table}`, function() { - this.on(source_id, '=', table + '.' + target_id) - .andOn(table + '.is_deleted', '=', knex.raw('false')) - }) - }) - }, - - includeHasMany(source_id, target_id, subq = null) { - return this._includeBase(2, function(self, table, qb) { - return qb.leftOuterJoin(`${self.tableName} as ${table}`, function() { - this.on(table + '.' + source_id, '=', target_id) - .andOn(table + '.is_deleted', '=', knex.raw('false')) - if (subq) { - subq(this, self) - } - }) - }) - }, - - async getAllQuery(query, queryContext = null) { - console.log('1') - let context = (queryContext || query).queryContext() - if (!context.tables) throw new Error('getAll was called before query') - let tables = context.tables - let tableMap = new Map(tables) - - try { - console.log(query) - console.log(query.toString()) - let data = await query - } catch (err) { - console.log(err) - throw err - } - console.log('3') - - if (data.length === 0) { - console.log('e1') - return data - } - - let keys = Object.keys(data[0]) - for (let i = 0; i < keys.length; i++) { - let parts = keys[i].split('.') - if (parts.length === 1) { - if (parts[0] !== '__group') { - tables[0][1].builder += `'${parts[0]}': data.${keys[i]},` - } - } else { - let builder = tableMap.get(parts[0]) - if (builder) { - builder.builder += `'${parts[1]}': data['${keys[i]}'],` - } - } - } - - tableMap.forEach(table => { - table.builder += '}' - table.fn = functionMap.get(table.builder) - if (!table.fn) { - table.fn = new Function('data', table.builder) - functionMap.set(table.builder, table.fn) - } - }) - - let out = [] - let includesTwoSet = new Set() - - for (let i = 0; i < data.length; i++) { - let baseItem = null - for (var t = 0; t < tables.length; t++) { - let table = tables[t][1] - let propertyName = table.include - let formattedData = table.fn(data[i]) - - if (!formattedData) { - if (propertyName && baseItem[propertyName] === undefined) { - console.log('emptying') - baseItem[propertyName] = (table.includeType.type === 1 ? null : []) - } - continue - } - - let row = new table.Model(table.fn(data[i])) - let rowId = row.id - if (table.isRoot && data[i].__group) { - rowId = data[i].__group + '_' + row.id - } - - let foundItem = table.map.get(rowId) - - // If we didn't find this item, current table moble or joined table model - // is new, therefore we need to create it - if (!foundItem) { - // Create a reference to it if we're dealing with the root object - if (table.isRoot) { - baseItem = row - } - table.map.set(rowId, row) - - if (table.isRoot) { - // Add item to root array since this is a root array - out.push(baseItem) - } else if (table.includeType.type === 1) { - // This is a single instance join for the root mode, - // set it directly to the root - baseItem[propertyName] = row - } else if (table.includeType.type === 2) { - // This is an array instance for the root model. Time to dig in. - /* if (!baseItem[propertyName]) { - baseItem[propertyName] = [] - } */ - if (!includesTwoSet.has(baseItem.id + '_' + propertyName + '_' + row.id)) { - baseItem[propertyName].push(row) - includesTwoSet.add(baseItem.id + '_' + propertyName + '_' + row.id) - } - } - } else if (table.isRoot) { - baseItem = foundItem - } else if (propertyName) { - if (table.includeType.type === 1 && !baseItem[propertyName]) { - baseItem[propertyName] = foundItem - } else if (table.includeType.type === 2 && !includesTwoSet.has(baseItem.id + '_' + propertyName + '_' + row.id)) { - /* if (!baseItem[propertyName]) { - baseItem[propertyName] = [] - } */ - baseItem[propertyName].push(foundItem) - includesTwoSet.add(baseItem.id + '_' + propertyName + '_' + row.id) - } - } - } - } - - console.log('2') - - return out - }, - - async getSingleQuery(query, require = true) { - let data = await this.getAllQuery(query) - if (data.length) return data[0] - if (require) throw new Error('EmptyResponse') - return null - }, - - query(qb, includes = [], customFields = null, parent = null, pagination = null, paginationOrderBy = null) { - let query - let fields - if (customFields === true) { - fields = this.publicFields - } else { - fields = customFields ? customFields : this.publicFields - } - if (pagination) { - query = knex.with(this.tableName, subq => { - subq.select(this.tableName + '.*') - .from(this.tableName) - .where(this.tableName + '.is_deleted', '=', 'false') - - qb(subq) - subq.orderBy(pagination.orderProperty, pagination.sort) - .limit(pagination.perPage) - .offset((pagination.page - 1) * pagination.perPage) - }).from(this.tableName) - } else { - query = knex(this.tableName).where(this.tableName + '.is_deleted', '=', 'false') - qb(query) - } - let tables = parent && parent.queryContext().tables || [] - let tableMap = new Map(tables) - if (!tables.length) { - tables.push([this.tableName, { - builder: 'return {', - fn: null, - map: new Map(), - Model: this.Model, - isRoot: true, - include: null, - includeType: {}, - }]) - } - - query.select(fields) - - for (let i = 0; i < includes.length; i++) { - let includeType = this.includes[includes[i]] - if (!includeType) { - throw new Error(`Model ${this.tableName} was missing includes ${includes[i]}`) - } - includeType.qb(query).select(includeType.fields) - - if (tableMap.has(includeType.table)) { - continue - } - - if (includeType.type === 1) { - tables[0][1].builder += `${includes[i]}: null,` - } else { - tables[0][1].builder += `${includes[i]}: [],` - } - let newTable = [ - includeType.table, - { - builder: `if (!data.id && !data['${includeType.table}.id']) {/*console.log('${includeType.table}', data.id, data['${includeType.table}.id']);*/return null;} return {`, - fn: null, - map: new Map(), - isRoot: false, - Model: includeType.model.Model, - include: includes[i], - includeType: includeType, - } - ] - tables.push(newTable) - tableMap.set(newTable[0], newTable[1]) - } - - if (pagination) { - query.orderBy(pagination.orderProperty, pagination.sort) - } - - query.queryContext({ tables: tables }) - - return query - }, - - async _getAll(ctx, subq, includes = [], orderBy = 'id') { - let orderProperty = orderBy - let sort = 'ASC' - - if (orderProperty[0] === '-') { - orderProperty = orderProperty.slice(1) - sort = 'DESC' - } - - ctx.state.pagination.sort = sort - ctx.state.pagination.orderProperty = orderProperty - - let [data, total] = await Promise.all([ - this.getAllQuery(this.query(qb => { - let qbnow = qb - if (subq) { - qbnow = subq(qb) || qb - } - return qbnow - }, includes, null, null, ctx.state.pagination)), - (() => { - let qb = this.knex(this.tableName) - if (subq) { - qb = subq(qb) || qb - } - qb.where(this.tableName + '.is_deleted', '=', false) - return qb.count('* as count') - })(), - ]) - ctx.state.pagination.total = total[0].count - return data - }, - - getAll(ctx, subq, includes = [], orderBy = 'id') { - return this._getAll(ctx, subq, includes, orderBy) - }, - - _getSingle(subq, includes = [], require = true, ctx = null) { - return this.getSingleQuery(this.query(qb => { - return qb - .where(qb => { - if (subq) subq(qb) - }) - }, includes), require) - }, - - getSingle(id, includes = [], require = true, ctx = null) { - return this._getSingle(qb => qb.where(this.tableName + '.id', '=', Number(id) || 0 ), includes, require, ctx) - }, - - async updateSingle(ctx, id, body) { - // Fetch the item in question, making sure it exists - let item = await this.getSingle(id, [], true, ctx) - - // Paranoia checking - if (typeof(item.id) !== 'number') throw new Error('Item was missing id') - - body.updated_at = new Date() - - // Update our item in the database - let out = await knex(this.tableName) - .where({ id: item.id }) - // Map out the 'as' from the private fields so it returns a clean - // response in the body - .update(body, this.privateFields.map(x => x.split('as')[0])) - - // More paranoia checking - if (out.length < 1) throw new Error('Updated item returned empty result') - - return out[0] - }, - - /** - * Create new entry in the database. - * - * @param {Object} data - The values the new item should have - * @return {Object} The resulting object - */ - async create(body) { - body.created_at = new Date() - body.updated_at = new Date() - let out = await knex(this.tableName) - // Map out the 'as' from the private fields so it returns a clean - // response in the body - .insert(body, this.privateFields.map(x => x.split('as')[0])) - - // More paranoia checking - if (out.length < 1) throw new Error('Updated item returned empty result') - - return out[0] - }, - - /** - * Apply basic filtering to query builder object. Basic filtering - * applies stuff like custom filtering in the query and ordering and other stuff - * - * @param {Request} ctx - API Request object - * @param {QueryBuilder} qb - knex query builder object to apply filtering on - * @param {Object} [where={}] - Any additional filtering - * @param {string} [orderBy=id] - property to order result by - * @param {Object[]} [properties=[]] - Properties allowed to filter by from query - */ - _baseQueryAll(ctx, qb, where = {}, orderBy = 'id', properties = []) { - let orderProperty = orderBy - let sort = 'ASC' - - if (orderProperty[0] === '-') { - orderProperty = orderProperty.slice(1) - sort = 'DESC' - } - - qb.where(where) - _.forOwn(ctx.state.filter.where(properties), (value, key) => { - if (key.startsWith('is_')) { - qb.where(key, value === '0' ? false : true) - } else { - qb.where(key, 'LIKE', `%${value}%`) - } - }) - _.forOwn(ctx.state.filter.whereNot(properties), (value, key) => { - if (key.startsWith('is_')) { - qb.whereNot(key, value === '0' ? false : true) - } else { - qb.where(key, 'NOT LIKE', `%${value}%`) - } - }) - qb.orderBy(orderProperty, sort) - }, - - /*async getSingle(id, require = true, ctx = null) { - let where = { id: Number(id) || 0 } - - let data = await knex(this.tableName).where(where).first(this.publicFields) - - if (!data && require) throw new Error('EmptyResponse') - - return data - },*/ - }) -} - -export function safeColumns(extra) { - return ['id', /*'is_deleted',*/ 'created_at', 'updated_at'].concat(extra || []) -} -/*shelf.safeColumns = (extra) => - ['id', 'is_deleted', 'created_at', 'updated_at'].concat(extra || [])*/ diff --git a/old/media/model.mjs b/old/media/model.mjs deleted file mode 100644 index 923c399..0000000 --- a/old/media/model.mjs +++ /dev/null @@ -1,133 +0,0 @@ -import path from 'path' -import { createPrototype, safeColumns } from '../knex.mjs' -import config from '../config.mjs' - -/* - -Media model: -{ - filename, - filetype, - small_image, - medium_image, - large_image, - *small_url, - *medium_url, - *large_url, - size, - staff_id, - is_deleted, - created_at, - updated_at, -} - -*/ - -const baseUrl = config.get('upload:baseurl') - -function MediaItem(data) { - Object.assign(this, data) - - this.small_url = `${baseUrl}${this.small_image}` - this.medium_url = `${baseUrl}${this.medium_image}` - this.large_url = `${baseUrl}${this.large_image}` - this.small_url_avif = this.small_image_avif ? `${baseUrl}${this.small_image_avif}` : null - this.medium_url_avif = this.small_image_avif ? `${baseUrl}${this.medium_image_avif}` : null - this.large_url_avif = this.small_image_avif ? `${baseUrl}${this.large_image_avif}` : null - this.link = `${baseUrl}${this.org_image}` -} - -function Media() { - this.tableName = 'media' - this.Model = MediaItem - this.publicFields = this.privateFields = safeColumns([ - 'filename', - 'filetype', - 'small_image', - 'medium_image', - 'large_image', - 'org_image', - 'size', - 'staff_id', - 'small_image_avif', - 'medium_image_avif', - 'large_image_avif', - ]) - this.init() -} - -Media.prototype = createPrototype({ - baseUrl: baseUrl, - - getSubUrl(input, size, type = 'jpg') { - if (!input) return input - - let output = input - if (path.extname(input)) { - let ext = path.extname(input).toLowerCase() - output = input.slice(0, -ext.length) - } - return `${output}.${size}.${type}` - }, -}) - -/* -const Media = bookshelf.createModel({ - tableName: 'media', - - virtuals: { - small_url() { - return `${Media.baseUrl}${this.get('small_image')}` - }, - - medium_url() { - return `${Media.baseUrl}${this.get('medium_image')}` - }, - - large_url() { - return `${Media.baseUrl}${this.get('large_image')}` - }, - - small_url_avif() { - if (!this.get('small_image_avif')) return null - return `${Media.baseUrl}${this.get('small_image_avif')}` - }, - - medium_url_avif() { - if (!this.get('small_image_avif')) return null - return `${Media.baseUrl}${this.get('medium_image_avif')}` - }, - - large_url_avif() { - if (!this.get('small_image_avif')) return null - return `${Media.baseUrl}${this.get('large_image_avif')}` - }, - - link() { - return `${Media.baseUrl}${this.get('org_image')}` - }, - - url() { - return `${Media.baseUrl}${this.get('medium_image')}` - }, - - thumb() { - return `${Media.baseUrl}${this.get('small_image')}` - }, - }, -}, { - baseUrl: config.get('upload:baseurl'), - - getSubUrl(input, size, type = 'jpg') { - if (!input) return input - - let output = input - if (path.extname(input)) { - let ext = path.extname(input).toLowerCase() - output = input.slice(0, -ext.length) - } - return `${output}.${size}.${type}` - }, -})*/ - -export default new Media() diff --git a/old/media/resize.mjs b/old/media/resize.mjs deleted file mode 100644 index 467f8a6..0000000 --- a/old/media/resize.mjs +++ /dev/null @@ -1,101 +0,0 @@ -import sharp from 'sharp' -import Media from './model.mjs' - -export default class Resizer { - constructor(opts = {}) { - Object.assign(this, { - Media: opts.Media || Media, - sharp: opts.sharp || sharp, - }) - } - - createSmall(input, format = 'jpg') { - let output = this.Media.getSubUrl(input, 'small', format === 'avif' ? 'avif' : 'jpg') - - let sized = this.sharp(input) - .resize(500, 500, { - fit: sharp.fit.inside, - withoutEnlargement: true, - }) - - if (format === 'avif') { - return sized - .avif({ - quality: 80, - speed: 5, - }) - .toFile(output) - .then(() => output) - } else { - return sized - .jpeg({ - quality: 93, - }) - .toFile(output) - .then(() => output) - } - } - - createMedium(input, height, format = 'jpg') { - let output = this.Media.getSubUrl(input, 'medium', format === 'avif' ? 'avif' : 'jpg') - - let sized = this.sharp(input) - .resize(800, height || 800, { - fit: height && sharp.fit.cover || sharp.fit.inside, - withoutEnlargement: true, - }) - - if (format === 'avif') { - return sized - .avif({ - quality: 80, - speed: 5, - }) - .toFile(output) - .then(() => output) - } else { - return sized - .jpeg({ - quality: 93, - }) - .toFile(output) - .then(() => output) - } - } - - createLarge(input, format = 'jpg') { - let output = this.Media.getSubUrl(input, 'large', format === 'avif' ? 'avif' : 'jpg') - - let sized = this.sharp(input) - .resize(1280, 1280, { - fit: sharp.fit.inside, - withoutEnlargement: true, - }) - - if (format === 'avif') { - return sized - .avif({ - quality: 85, - speed: 5, - }) - .toFile(output) - .then(() => output) - } else { - return sized - .jpeg({ - quality: 93, - }) - .toFile(output) - .then(() => output) - } - } - - autoRotate(input) { - const output = `${input}_2.jpg` - - return this.sharp(input) - .rotate() - .toFile(output) - .then(() => output) - } -} diff --git a/old/media/routes.mjs b/old/media/routes.mjs deleted file mode 100644 index dc92d5c..0000000 --- a/old/media/routes.mjs +++ /dev/null @@ -1,70 +0,0 @@ -import config from '../config.mjs' -import Media from './model.mjs' -import * as multer from '../multer.mjs' -import Resizer from './resize.mjs' -import { uploadFile } from './upload.mjs' -import Jwt from '../jwt.mjs' - -export default class MediaRoutes { - constructor(opts = {}) { - Object.assign(this, { - Media: opts.Media || Media, - multer: opts.multer || multer, - resize: opts.resize || new Resizer(), - jwt: opts.jwt || new Jwt(), - uploadFile: opts.uploadFile || uploadFile, - }) - } - - async upload(ctx) { - let result = await this.multer.processBody(ctx) - - let height = null - if (ctx.query.height) { - height = Number(ctx.query.height) - } - - let smallPath = await this.resize.createSmall(result.path) - let mediumPath = await this.resize.createMedium(result.path, height) - let largePath = await this.resize.createLarge(result.path) - let smallPathAvif = await this.resize.createSmall(result.path, 'avif') - let mediumPathAvif = await this.resize.createMedium(result.path, height, 'avif') - let largePathAvif = await this.resize.createLarge(result.path, 'avif') - - let token = this.jwt.signDirect({ site: config.get('upload:name') }, config.get('upload:secret')) - - let [org, small, medium, large, smallAvif, mediumAvif, largeAvif] = await Promise.all([ - this.uploadFile(token, result.path), - this.uploadFile(token, smallPath), - this.uploadFile(token, mediumPath), - this.uploadFile(token, largePath), - this.uploadFile(token, smallPathAvif), - this.uploadFile(token, mediumPathAvif), - this.uploadFile(token, largePathAvif), - ]) - - ctx.body = await this.Media.create({ - filename: result.originalname, - filetype: result.mimetype, - small_image: small.path, - medium_image: medium.path, - large_image: large.path, - small_image_avif: smallAvif.path, - medium_image_avif: mediumAvif.path, - large_image_avif: largeAvif.path, - org_image: org.path, - size: result.size, - staff_id: ctx.state.user.id, - }) - } - - async getAllMedia(ctx) { - ctx.body = await this.Media.getAll(ctx) - } - - async removeMedia(ctx) { - await this.Media.updateSingle(ctx, ctx.params.id, { is_deleted: true }) - - ctx.status = 200 - } -} diff --git a/old/media/upload.mjs b/old/media/upload.mjs deleted file mode 100644 index 17e667f..0000000 --- a/old/media/upload.mjs +++ /dev/null @@ -1,77 +0,0 @@ -import http from 'http' -import path from 'path' -import fs from 'fs' -import config from '../config.mjs' - -let stub - -export function uploadFile(token, file) { - // For testing - if (stub) return stub(token, file) - - return new Promise((resolve, reject) => { - fs.readFile(file, (err, data) => { - if (err) return reject(err) - - const crlf = '\r\n' - const filename = path.basename(file) - const boundary = `--${Math.random().toString(16)}` - const headers = [ - `Content-Disposition: form-data; name="file"; filename="${filename}"` + crlf, - ] - const multipartBody = Buffer.concat([ - new Buffer( - `${crlf}--${boundary}${crlf}` + - headers.join('') + crlf - ), - data, - new Buffer( - `${crlf}--${boundary}--` - ), - ]) - - const options = { - port: config.get('upload:port'), - hostname: config.get('upload:host'), - method: 'POST', - path: '/media?token=' + token, - headers: { - 'Content-Type': 'multipart/form-data; boundary=' + boundary, - 'Content-Length': multipartBody.length, - }, - } - - const req = http.request(options) - - req.write(multipartBody) - req.end() - - req.on('error', reject) - - req.on('response', res => { - res.setEncoding('utf8') - let output = '' - - res.on('data', function (chunk) { - output += chunk.toString() - }) - - res.on('end', function () { - try { - output = JSON.parse(output) - } catch (e) { - return reject(e) - } - if (output.status) { - return reject(new Error(`Unable to upload! [${output.status}]: ${output.message}`)) - } - resolve(output) - }) - }) - }) - }) -} - -export function overrideStub(newStub) { - stub = newStub -} diff --git a/old/middlewares/mask.mjs b/old/middlewares/mask.mjs deleted file mode 100644 index a0f1827..0000000 --- a/old/middlewares/mask.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import jsonmask from 'json-mask' - -export function mask() { - return async function(ctx, next) { - await next() - - let body = ctx.body - let fields = ctx.query['fields'] || ctx.fields - - if (!body || 'object' != typeof body || !fields) return - - if (body && body.toJSON) { - body = body.toJSON() - } - - ctx.body = jsonmask.filter(body, jsonmask.compile(fields)) - } -} diff --git a/old/multer.mjs b/old/multer.mjs deleted file mode 100644 index 43fc168..0000000 --- a/old/multer.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import multer from 'multer' - -const storage = multer.diskStorage({ - filename: (req, file, cb) => cb(null, file.originalname), -}) -const upload = multer({ storage: storage }) - -export function processBody(ctx) { - return new Promise((res, rej) => { - upload.single('file')(ctx.req, ctx.res, (err) => { - if (err) return rej(err) - return res(ctx.req.file) - }) - }) -} diff --git a/old/page/model.mjs b/old/page/model.mjs deleted file mode 100644 index d0b630b..0000000 --- a/old/page/model.mjs +++ /dev/null @@ -1,125 +0,0 @@ - -import { createPrototype, safeColumns } from '../knex.mjs' -import Media from '../media/model.mjs' -// import Staff from '../staff/model.mjs' -// import Article from '../article/model.mjs' - -/* - -Page model: -{ - filename, - filetype, - small_image, - medium_image, - large_image, - *small_url, - *medium_url, - *large_url, - size, - staff_id, - is_deleted, - created_at, - updated_at, -} - -*/ - -function PageItem(data) { - Object.assign(this, data) - this.children = [] -} - -function Page() { - this.tableName = 'pages' - this.Model = PageItem - this.includes = { - media: Media.includeHasOne('pages.media_id', 'id'), - banner: Media.includeHasOne('pages.banner_id', 'id'), - } - this.publicFields = this.privateFields = safeColumns([ - 'staff_id', - 'parent_id', - 'name', - 'path', - 'description', - 'banner_id', - 'media_id', - ]) - this.init() -} - -Page.prototype = createPrototype({ - /* includes: { - staff: Staff.includeHasOne('staff_id', 'id'), - }, */ - - /*banner() { - return this.belongsTo(Media, 'banner_id') - }, - - parent() { - return this.belongsTo(Page, 'parent_id') - }, - - children() { - return this.hasManyFiltered(Page, 'children', 'parent_id') - .query(qb => { - qb.orderBy('name', 'ASC') - }) - }, - - news() { - return this.hasManyFiltered(Article, 'news', 'parent_id') - .query(qb => { - qb.orderBy('id', 'desc') - }) - }, - - media() { - return this.belongsTo(Media, 'media_id') - }, - - staff() { - return this.belongsTo(Staff, 'staff_id') - },*/ - - getSingle(id, includes = [], require = true, ctx = null) { - return this._getSingle(qb => { - qb.where(subq => { - subq.where(this.tableName + '.id', '=', Number(id) || 0) - .orWhere(this.tableName + '.path', '=', id) - }) - }, includes, require, ctx) - }, - - async getTree() { - let items = await this.getAllQuery(this.query( - qb => qb.orderBy('name', 'ASC'), - [], - ['parent_id', 'id', 'name', 'path'] - )) - - let out = [] - let map = new Map() - for (let i = 0; i < items.length; i++) { - if (!items[i].parent_id) { - out.push(items[i]) - } - map.set(items[i].id, items[i]) - } - for (let i = 0; i < items.length; i++) { - if (items[i].parent_id && map.has(items[i].parent_id)) { - map.get(items[i].parent_id).children.push(items[i]) - } - } - return out - }, -}) - -const pageInstance = new Page() - -pageInstance.addInclude('children', pageInstance.includeHasMany('parent_id', 'pages.id')) -pageInstance.addInclude('parent', pageInstance.includeHasOne('pages.parent_id', 'id')) - -export default pageInstance diff --git a/old/page/routes.mjs b/old/page/routes.mjs deleted file mode 100644 index 13a98d4..0000000 --- a/old/page/routes.mjs +++ /dev/null @@ -1,53 +0,0 @@ -import Page from './model.mjs' -import * as security from './security.mjs' - -export default class PageRoutes { - constructor(opts = {}) { - Object.assign(this, { - Page: opts.Page || Page, - security: opts.security || security, - }) - } - - /** GET: /api/pagetree */ - async getPageTree(ctx) { - ctx.body = await this.Page.getTree() - } - - /** GET: /api/pages */ - async getAllPages(ctx) { - await this.security.ensureIncludes(ctx) - - ctx.body = await this.Page.getAll(ctx, null, ctx.state.filter.includes, 'name') - } - - /** GET: /api/pages/:id */ - async getSinglePage(ctx) { - await this.security.ensureIncludes(ctx) - - ctx.body = await this.Page.getSingle(ctx.params.pageId, ctx.state.filter.includes, true, ctx) - } - - /** POST: /api/pages */ - async createPage(ctx) { - await this.security.validUpdate(ctx) - - ctx.body = await this.Page.create(ctx.request.body) - } - - /** PUT: /api/pages/:id */ - async updatePage(ctx) { - await this.security.validUpdate(ctx) - - let page = await this.Page.updateSingle(ctx, ctx.params.id, ctx.request.body) - - ctx.body = page - } - - /** DELETE: /api/pages/:id */ - async removePage(ctx) { - await this.Page.updateSingle(ctx, ctx.params.id, { is_deleted: true }) - - ctx.status = 204 - } -} diff --git a/old/page/security.mjs b/old/page/security.mjs deleted file mode 100644 index 4f8781c..0000000 --- a/old/page/security.mjs +++ /dev/null @@ -1,37 +0,0 @@ -import filter from '../filter.mjs' - -const requiredFields = [ - 'name', - 'path', -] - -const validFields = [ - 'name', - 'path', - 'parent_id', - 'description', - 'media_id', - 'banner_id', -] - -export async function ensureIncludes(ctx) { - let out = filter(ctx.state.filter.includes, ['staff', 'media', 'banner', 'news', 'news.media', 'parent', 'children']) - - if (out.length > 0) { - ctx.throw(422, `Includes had following invalid values: ${out.join(', ')}`) - } -} - -export async function validUpdate(ctx) { - requiredFields.forEach(item => { - if (ctx.request.body[item] == null) { - ctx.throw(422, `Property was missing: ${item}`) - } - }) - - let out = filter(Object.keys(ctx.request.body), validFields) - - if (out.length > 0) { - ctx.throw(422, `Body had following invalid properties: ${out.join(', ')}`) - } -} diff --git a/old/parser/middleware.mjs b/old/parser/middleware.mjs deleted file mode 100644 index 61e5aa5..0000000 --- a/old/parser/middleware.mjs +++ /dev/null @@ -1,33 +0,0 @@ -import format from 'format-link-header' - -import * as pagination from './pagination.mjs' - -export default class ParserMiddleware { - constructor(opts = {}) { - Object.assign(this, { - pagination: opts.pagination || pagination, - format: opts.format || format, - }) - } - - contextParser() { - return (ctx) => { - ctx.state.pagination = this.pagination.parsePagination(ctx) - ctx.state.filter = this.pagination.parseFilter(ctx) - } - } - - generateLinks() { - return async (ctx, next) => { - await next() - - if (ctx.state.pagination.total > 0) { - ctx.set('Link', this.format(this.pagination.generateLinks(ctx, ctx.state.pagination.total))) - } - - if (ctx.state.pagination.total != null) { - ctx.set('pagination_total', ctx.state.pagination.total) - } - } - } -} diff --git a/old/parser/pagination.mjs b/old/parser/pagination.mjs deleted file mode 100644 index 11f78c4..0000000 --- a/old/parser/pagination.mjs +++ /dev/null @@ -1,129 +0,0 @@ -import _ from 'lodash' -import { format } from 'url' -import config from '../config.mjs' - -function limit(value, min, max, fallback) { - let out = parseInt(value, 10) - - if (!out) { - out = fallback - } - - if (out < min) { - out = min - } - - if (out > max) { - out = max - } - - return out -} - -export function parsePagination(ctx) { - let out = { - perPage: limit(ctx.query.perPage, 1, 1500, 1250), - page: limit(ctx.query.page, 1, Number.MAX_SAFE_INTEGER, 1), - } - - Object.keys(ctx.query).forEach(item => { - if (item.startsWith('perPage.')) { - let name = item.substring(8) - out[name] = { - perPage: limit(ctx.query[`perPage.${name}`], 1, 1500, 1250), - page: limit(ctx.query[`page.${name}`], 1, Number.MAX_SAFE_INTEGER, 1), - } - } - }) - - return out -} - -export function parseFilter(ctx) { - let where - let whereNot - - where = _.omitBy(ctx.query, test => test[0] === '!') - - whereNot = _.pickBy(ctx.query, test => test[0] === '!') - whereNot = _.transform( - whereNot, - (result, value, key) => (result[key] = value.slice(1)) - ) - - return { - where: pick => _.pick(where, pick), - whereNot: pick => _.pick(whereNot, pick), - includes: (ctx.query.includes && ctx.query.includes.split(',')) || [], - } -} - -export function generateLinks(ctx, total) { - let out = [] - - let base = _(ctx.query) - .omit(['page']) - .transform((res, val, key) => res.push(`${key}=${val}`), []) - .value() - - if (!ctx.query.perPage) { - base.push(`perPage=${ctx.state.pagination.perPage}`) - } - - // let protocol = ctx.protocol - - // if (config.get('frontend:url').startsWith('https')) { - // protocol = 'https' - // } - - let proto = ctx.protocol - - if (config.get('frontend:url').startsWith('https')) { - proto = 'https' - } - - let first = format({ - protocol: proto, - host: ctx.host, - pathname: ctx.path, - }) - - first += `?${base.join('&')}` - - // Add the current page first - out.push({ - rel: 'current', - title: `Page ${ctx.query.page || 1}`, - url: `${first}`, - }) - - // Then add any previous pages if we can - if (ctx.state.pagination.page > 1) { - out.push({ - rel: 'previous', - title: 'Previous', - url: `${first}&page=${ctx.state.pagination.page - 1}`, - }) - out.push({ - rel: 'first', - title: 'First', - url: `${first}&page=1`, - }) - } - - // Then add any next pages if we can - if ((ctx.state.pagination.perPage * (ctx.state.pagination.page - 1)) + ctx.state.pagination.perPage < total) { - out.push({ - rel: 'next', - title: 'Next', - url: `${first}&page=${ctx.state.pagination.page + 1}`, - }) - out.push({ - rel: 'last', - title: 'Last', - url: `${first}&page=${Math.ceil(total / ctx.state.pagination.perPage)}`, - }) - } - - return out -} diff --git a/old/router.mjs b/old/router.mjs deleted file mode 100644 index 7e81806..0000000 --- a/old/router.mjs +++ /dev/null @@ -1,57 +0,0 @@ -/* eslint max-len: 0 */ -import Router from 'koa-router' - -import access from './access/index.mjs' -import { restrict } from './access/middleware.mjs' - -import AuthRoutes from './authentication/routes.mjs' -// import MediaRoutes from './media/routes.mjs' -// import FileRoutes from './file/routes.mjs' -import PageRoutes from './page/routes.mjs' -import ArticleRoutes from './article/routes.mjs' -import StaffRoutes from './staff/routes.mjs' - -const router = new Router() - -// API Authentication -const authentication = new AuthRoutes() -router.post('/api/login/user', authentication.loginUser.bind(authentication)) - -// API Media -// const media = new MediaRoutes() -// router.get('/api/media', restrict(access.Manager), media.getAllMedia.bind(media)) -// router.post('/api/media', restrict(access.Manager), media.upload.bind(media)) -// router.del('/api/media/:id', restrict(access.Manager), media.removeMedia.bind(media)) - -// API File -// const file = new FileRoutes() -// router.get('/api/file', restrict(access.Manager), file.getAllFiles.bind(file)) -// router.post('/api/articles/:articleId/file', restrict(access.Manager), file.upload.bind(file)) -// router.del('/api/file/:id', restrict(access.Manager), file.removeFile.bind(file)) - -const page = new PageRoutes() -router.get('/api/pagetree', page.getPageTree.bind(page)) -router.get('/api/pages', page.getAllPages.bind(page)) -router.get('/api/pages/:id', page.getSinglePage.bind(page)) -router.post('/api/pages', restrict(access.Manager), page.createPage.bind(page)) -router.put('/api/pages/:id', restrict(access.Manager), page.updatePage.bind(page)) -router.del('/api/pages/:id', restrict(access.Manager), page.removePage.bind(page)) - -const article = new ArticleRoutes() -router.get('/api/articles', restrict(access.Manager), article.getAllArticles.bind(article)) -router.get('/api/articles/public', article.getPublicAllArticles.bind(article)) -router.get('/api/articles/public/:id', article.getPublicSingleArticle.bind(article)) -router.get('/api/pages/:pageId/articles/public', article.getPublicAllPageArticles.bind(article)) -router.get('/api/articles/:id', restrict(access.Manager), article.getSingleArticle.bind(article)) -router.post('/api/articles', restrict(access.Manager), article.createArticle.bind(article)) -router.put('/api/articles/:id', restrict(access.Manager), article.updateArticle.bind(article)) -router.del('/api/articles/:id', restrict(access.Manager), article.removeArticle.bind(article)) - -const staff = new StaffRoutes() -router.get('/api/staff', restrict(access.Manager), staff.getAllStaff.bind(staff)) -router.get('/api/staff/:id', restrict(access.Admin), staff.getSingleStaff.bind(staff)) -router.post('/api/staff', restrict(access.Admin), staff.createStaff.bind(staff)) -router.put('/api/staff/:id', restrict(access.Admin), staff.updateStaff.bind(staff)) -router.del('/api/staff/:id', restrict(access.Admin), staff.removeStaff.bind(staff)) - -export default router diff --git a/old/serve.mjs b/old/serve.mjs deleted file mode 100644 index 912a348..0000000 --- a/old/serve.mjs +++ /dev/null @@ -1,61 +0,0 @@ -import send from 'koa-send' -import defaults from './defaults.mjs' -import access from './access/index.mjs' -import { restrict } from './access/middleware.mjs' -import { serveIndex } from './serveindex.mjs' -import config from './config.mjs' - -const restrictAdmin = restrict(access.Manager) - -export function serve(docRoot, pathname, options = {}) { - options.root = docRoot - - return async (ctx, next) => { - let opts = defaults({}, options) - if (ctx.request.method === 'OPTIONS') return - - let filepath = ctx.path.replace(pathname, '') - - if (filepath === '/') { - filepath = '/index.html' - } - - if (filepath.endsWith('.jpg') - || filepath.endsWith('.png') - || filepath.endsWith('.js') - || filepath.endsWith('.css') - || filepath.endsWith('.avif') - || filepath.endsWith('.svg')) { - if (filepath.indexOf('admin') === -1) { - opts = defaults({ maxage: 2592000 * 1000 }, opts) - } - if (filepath.endsWith('.avif')) { - ctx.type = 'image/avif' - } - } - - if (filepath === '/index.html') { - return serveIndex(ctx, '/') - } - - if (filepath.indexOf('admin') >= 0 - && (filepath.indexOf('js') >= 0 - || filepath.indexOf('css') >= 0)) { - if (filepath.indexOf('.map') === -1 && filepath.indexOf('.scss') === -1) { - await restrictAdmin(ctx) - ctx.set('Cache-Control', 'no-store, no-cache, must-revalidate') - } else if (config.get('NODE_ENV') !== 'development') { - ctx.status = 404 - return - } - } - - return send(ctx, filepath, opts).catch((er) => { - if (er.code === 'ENOENT' && er.status === 404) { - ctx.type = null - return serveIndex(ctx, filepath) - // return send(ctx, '/index.html', options) - } - }) - } -} diff --git a/old/serveindex.mjs b/old/serveindex.mjs deleted file mode 100644 index cd1967b..0000000 --- a/old/serveindex.mjs +++ /dev/null @@ -1,222 +0,0 @@ -import { readFileSync } from 'fs' -import dot from 'dot' -import striptags from 'striptags' - -import config from './config.mjs' -import Page from './page/model.mjs' -// import Article from '../app/article/model.mjs' -import Article from './article/model.mjs' - -const body = readFileSync('./public/index.html').toString() -const bodyTemplate = dot.template(body) -const frontend = config.get('frontend:url') - -function mapArticle(trim = false, x, includeBanner = false, includeFiles = true) { - return { - id: x.id, - published_at: x.published_at, - path: x.path, - description: x.description, - name: x.name, - staff: x.staff && ({ - id: x.staff.id, - fullname: x.staff.fullname, - }) || null, - media: x.media && ({ - link: !trim && x.media.link || null, - large_url: x.media.large_url, - large_url_avif: x.media.large_url_avif, - medium_url: x.media.medium_url, - medium_url_avif: x.media.medium_url_avif, - small_url: x.media.small_url, - small_url_avif: x.media.small_url_avif, - }) || null, - banner: x.banner && includeBanner && ({ - large_url: x.banner.large_url, - large_url_avif: x.banner.large_url_avif, - medium_url: x.banner.medium_url, - medium_url_avif: x.banner.medium_url_avif, - small_url: x.banner.small_url, - small_url_avif: x.banner.small_url_avif, - }) || null, - parent: x.parent && ({ - id: x.parent.id, - name: x.parent.name, - path: x.parent.path, - }), - files: x.files && includeFiles && x.files.map(f => ({ - filename: f.filename, - url: f.url, - magnet: f.magnet, - meta: f.meta.torrent && ({ - torrent: { - name: f.meta.torrent.name, - files: f.meta.torrent.files.map(tf => { - if (trim && f.meta.torrent.files.length > 4) return 1 - return { - name: tf.name, - size: tf.size, - } - }), - }, - }) || {}, - })) || [], - } -} - -function mapPage(x) { - return { - id: x.id, - created_at: x.created_at, - path: x.path, - description: x.description, - name: x.name, - media: x.media && ({ - link: x.media.link, - large_url: x.media.large_url, - large_url_avif: x.media.large_url_avif, - medium_url: x.media.medium_url, - medium_url_avif: x.media.medium_url_avif, - small_url: x.media.small_url, - small_url_avif: x.media.small_url_avif, - }) || null, - parent: x.parent && ({ - id: x.parent.id, - name: x.parent.name, - path: x.parent.path, - }), - banner: x.banner && ({ - large_url: x.banner.large_url, - large_url_avif: x.banner.large_url_avif, - medium_url: x.banner.medium_url, - medium_url_avif: x.banner.medium_url_avif, - small_url: x.banner.small_url, - small_url_avif: x.banner.small_url_avif, - }) || null, - children: x.children && x.children.map(f => ({ - id: f.id, - path: f.path, - name: f.name, - })) || [], - } -} - -export async function serveIndex(ctx, path) { - let tree = null - let data = null - let subdata = null - let links = null - let featured = null - let url = frontend + ctx.request.url - let image = frontend + '/assets/img/heart.png' - let image_avif = frontend + '/assets/img/heart.png' - let title = 'NFP Moe - Anime/Manga translation group' - let description = 'Small fansubbing and scanlation group translating and encoding our favourite shows from Japan.' - try { - tree = await Page.getTree() - let currPage = Number(ctx.query.page || '1') - - if (path === '/') { - let frontpage = await Article.getFrontpageArticles(currPage) - featured = frontpage.featured - data = frontpage.items.map(mapArticle.bind(null, true)) - - if (frontpage.total > currPage * 10) { - links = { - first: currPage > 1 ? { page: 1, title: 'First' } : null, - previous: currPage > 1 ? { page: currPage - 1, title: 'Previous' } : null, - current: { title: 'Page ' + currPage }, - next: { page: currPage + 1, title: 'Next' }, - last: { page: Math.ceil(frontpage.total / 10), title: 'Last' }, - } - } else { - links = { - first: currPage > 1 ? { page: 1, title: 'First' } : null, - previous: currPage > 1 ? { page: currPage - 1, title: 'Previous' } : null, - current: { title: 'Page 1' }, - } - } - if (currPage > 1) { - links.previous = { page: currPage - 1, title: 'Previous' } - links.first = { page: 1, title: 'First' } - } - } else if (path.startsWith('/article/') || path.startsWith('/page/')) { - let id = path.split('/')[2] - if (id) { - if (path.startsWith('/article/')) { - data = await Article.getSingle(id, ['media', 'parent', 'banner', 'files', 'staff'], false, null, true) - if (data) { - data = mapArticle(false, data) - } - } else { - data = await Page.getSingle(id, ['media', 'banner', 'children', 'parent']) - data = mapPage(data) - ctx.state.pagination = { - perPage: 10, - page: currPage, - } - subdata = await Article.getAllFromPage(ctx, data.id, ['files', 'media'], '-published_at', true) - subdata = subdata.map(mapArticle.bind(null, true)) - if (ctx.state.pagination.total > currPage * 10) { - links = { - first: currPage > 1 ? { page: 1, title: 'First' } : null, - previous: currPage > 1 ? { page: currPage - 1, title: 'Previous' } : null, - current: { title: 'Page ' + currPage }, - next: { page: currPage + 1, title: 'Next' }, - last: { page: Math.ceil(ctx.state.pagination.total / 10), title: 'Last' }, - } - } else { - links = { - first: currPage > 1 ? { page: 1, title: 'First' } : null, - previous: currPage > 1 ? { page: currPage - 1, title: 'Previous' } : null, - current: { title: 'Page 1' }, - } - } - } - if (data) { - if (data.media) { - image = data.media.large_url - image_avif = data.media.large_url_avifl - } else if (data.banner) { - image = data.banner.large_url - image_avif = data.banner.large_url_avifl - } - if (data.description) { - description = striptags(data.description) - } - if (data.parent) { - title = data.name + ' - ' + data.parent.name + ' - NFP Moe' - } else { - title = data.name + ' - NFP Moe' - } - } - } - } - if (!featured) { - featured = await Article.getFeaturedArticle(['media', 'banner']) - } - if (featured) { - featured = mapArticle(true, featured, true, false) - } - } catch (e) { - ctx.log.error(e) - data = null - links = null - } - ctx.body = bodyTemplate({ - v: config.get('CIRCLECI_VERSION'), - tree: JSON.stringify(tree), - data: JSON.stringify(data), - subdata: JSON.stringify(subdata), - links: JSON.stringify(links), - featured: JSON.stringify(featured), - url: url, - image: image, - image_avif: image_avif, - title: title, - description: description, - }) - ctx.set('Content-Length', Buffer.byteLength(ctx.body)) - ctx.set('Cache-Control', 'max-age=0') - ctx.set('Content-Type', 'text/html; charset=utf-8') -} diff --git a/old/server.mjs b/old/server.mjs deleted file mode 100644 index ac52d2e..0000000 --- a/old/server.mjs +++ /dev/null @@ -1,39 +0,0 @@ -import Koa from 'koa-lite' -import bodyParser from 'koa-bodyparser' -import cors from '@koa/cors' - -import config from './config.mjs' -import router from './router.mjs' -import Jwt from './jwt.mjs' -import log from './log.mjs' -import { serve } from './serve.mjs' -import { mask } from './middlewares/mask.mjs' -import { errorHandler } from './error/middleware.mjs' -import { accessChecks } from './access/middleware.mjs' -import ParserMiddleware from './parser/middleware.mjs' - -const app = new Koa() -const parser = new ParserMiddleware() - -app.use(log.logMiddleware()) -app.use(errorHandler()) -app.use(mask()) -app.use(bodyParser()) -app.use(parser.contextParser()) -app.use(accessChecks()) -app.use(parser.generateLinks()) -app.use(Jwt.jwtMiddleware()) -app.use(cors({ - exposeHeaders: ['link', 'pagination_total'], - credentials: true, -})) -app.use(router.routes()) -app.use(router.allowedMethods()) -app.use(serve('./public', '/public')) - -const server = app.listen( - config.get('server:port'), - () => log.info(`Server running on port ${config.get('server:port')}`) -) - -export default server diff --git a/old/setup.mjs b/old/setup.mjs deleted file mode 100644 index 36f4c28..0000000 --- a/old/setup.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import _ from 'lodash' - -import config from './config.mjs' -import log from './log.mjs' -import knex from 'knex-core' - -// This is important for setup to run cleanly. -let knexConfig = _.cloneDeep(config.get('knex')) -knexConfig.pool = { min: 1, max: 1 } - -let knexSetup = knex(knexConfig) - -export default function setup() { - log.info(knexConfig, 'Running database integrity scan.') - - return knexSetup.migrate.latest({ - directory: './migrations', - }) - .then((result) => { - if (result[1].length === 0) { - return log.info('Database is up to date') - } - for (let i = 0; i < result[1].length; i++) { - log.info('Applied migration from', result[1][i].substr(result[1][i].lastIndexOf('\\') + 1)) - } - return knexSetup.destroy() - }) -} diff --git a/old/staff/model.mjs b/old/staff/model.mjs deleted file mode 100644 index 6227cdd..0000000 --- a/old/staff/model.mjs +++ /dev/null @@ -1,82 +0,0 @@ -import { createPrototype, safeColumns } from '../knex.mjs' -// import bcrypt from 'bcrypt' -/*import config from '../config.mjs'*/ - -/* Staff model: -{ - id, - username, - password, - fullname, - is_deleted, - level, - created_at, - updated_at, -} - -*/ - -function StaffItem(data) { - Object.assign(this, data) -} - -function Staff() { - this.tableName = 'staff' - this.Model = StaffItem - this.privateFields = safeColumns(['fullname','email','level',]) - this.publicFields = ['id', 'fullname'] - this.init() -} - -Staff.prototype = createPrototype({ - hash(password) { - return new Promise((resolve, reject) => - bcrypt.hash(password, config.get('bcrypt'), (err, hashed) => { - if (err) return reject(err) - - resolve(hashed) - }) - ) - }, - - compare(password, hashed) { - return new Promise((resolve, reject) => - bcrypt.compare(password, hashed, (err, res) => { - if (err || !res) return reject(new Error('PasswordMismatch')) - resolve() - }) - ) - }, - - _getSingle(subq, includes = [], require = true, ctx = null) { - return this.getSingleQuery(this.query(qb => { - return qb - .where(qb => { - if (subq) subq(qb) - }) - }, includes, this.privateFields), require) - }, - - /* getAll(ctx, where = {}, withRelated = [], orderBy = 'id') { - return this.query(qb => { - this.baseQueryAll(ctx, qb, where, orderBy) - qb.select(bookshelf.safeColumns([ - 'fullname', - 'email', - 'level', - ])) - }) - .fetchPage({ - pageSize: ctx.state.pagination.perPage, - page: ctx.state.pagination.page, - withRelated, - ctx: ctx, - }) - .then(result => { - ctx.state.pagination.total = result.pagination.rowCount - return result - }) - }, */ -}) - -export default new Staff() diff --git a/old/staff/routes.mjs b/old/staff/routes.mjs deleted file mode 100644 index c90d30f..0000000 --- a/old/staff/routes.mjs +++ /dev/null @@ -1,44 +0,0 @@ -import Staff from './model.mjs' -import * as security from './security.mjs' - -export default class StaffRoutes { - constructor(opts = {}) { - Object.assign(this, { - Staff: opts.Staff || Staff, - security: opts.security || security, - }) - } - - /** GET: /api/staff */ - async getAllStaff(ctx) { - ctx.body = await this.Staff.getAll(ctx, null, []) - } - - /** GET: /api/staff/:id */ - async getSingleStaff(ctx) { - ctx.body = await this.Staff.getSingle(ctx.params.id, [], true, ctx) - } - - /** POST: /api/staff */ - async createStaff(ctx) { - await this.security.validUpdate(ctx) - - ctx.body = await this.Staff.create(ctx.request.body) - } - - /** PUT: /api/staff/:id */ - async updateStaff(ctx) { - await this.security.validUpdate(ctx) - - let staff = await this.Staff.updateSingle(ctx, ctx.params.id, ctx.request.body) - - ctx.body = staff - } - - /** DELETE: /api/staff/:id */ - async removeStaff(ctx) { - await this.Staff.updateSingle(ctx, ctx.params.id, { is_deleted: true }) - - ctx.status = 204 - } -} diff --git a/old/staff/security.mjs b/old/staff/security.mjs deleted file mode 100644 index 4411e92..0000000 --- a/old/staff/security.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import filter from '../filter.mjs' -import Staff from './model.mjs' - -const validFields = [ - 'fullname', - 'email', - 'password', - 'level', -] - -export async function validUpdate(ctx) { - let out = filter(Object.keys(ctx.request.body), validFields) - - if (out.length > 0) { - ctx.throw(422, `Body had following invalid properties: ${out.join(', ')}`) - } - - if (ctx.request.body.password) { - ctx.request.body.password = await Staff.hash(ctx.request.body.password) - } -}