From 12552f75f4f6d366092addb85baa0613a0f95084 Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Wed, 1 Dec 2021 19:52:25 +0300 Subject: [PATCH] add embed tool --- package.json | 1 - public/dist/editor.bundle.js | 13 ++++++++++++- public/dist/main.css | 2 +- src/frontend/js/classes/editor.js | 5 ++++- src/frontend/styles/components/page.pcss | 14 ++++++++++++++ src/views/pages/blocks/embed.twig | 12 ++++++++++++ src/views/pages/page.twig | 2 +- yarn.lock | 4 ---- 8 files changed, 44 insertions(+), 9 deletions(-) create mode 100644 src/views/pages/blocks/embed.twig diff --git a/package.json b/package.json index e904967..55d05ca 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ }, "dependencies": { "@editorjs/embed": "^2.5.0", - "@editorjs/nested-list": "^1.0.2", "bcrypt": "^5.0.1", "commander": "^2.19.0", "cookie-parser": "~1.4.3", diff --git a/public/dist/editor.bundle.js b/public/dist/editor.bundle.js index 35b384f..2ec9a5e 100644 --- a/public/dist/editor.bundle.js +++ b/public/dist/editor.bundle.js @@ -44,6 +44,17 @@ eval("/*! For license information please see editor.js.LICENSE.txt */\n!function /***/ }), +/***/ "./node_modules/@editorjs/embed/dist/bundle.js": +/*!*****************************************************!*\ + !*** ./node_modules/@editorjs/embed/dist/bundle.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("!function(e,t){ true?module.exports=t():undefined}(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=14)}([function(e,t,n){var r=n(5),i=n(6),o=n(7),a=n(9);e.exports=function(e,t){return r(e)||i(e,t)||o(e,t)||a()}},function(e,t){function n(t){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?e.exports=n=function(e){return typeof e}:e.exports=n=function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},n(t)}e.exports=n},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}},function(e,t){function n(e,t){for(var n=0;n=0?r=setTimeout(c,t-s):(r=null,n||(l=e.apply(o,i),o=i=null))}null==t&&(t=100);var s=function(){o=this,i=arguments,a=Date.now();var s=n&&!r;return r||(r=setTimeout(c,t)),s&&(l=e.apply(o,i),o=i=null),l};return s.clear=function(){r&&(clearTimeout(r),r=null)},s.flush=function(){r&&(l=e.apply(o,i),o=i=null,clearTimeout(r),r=null)},s}n.debounce=n,e.exports=n},function(e,t){e.exports=function(e){if(Array.isArray(e))return e}},function(e,t){e.exports=function(e,t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,i=!1,o=void 0;try{for(var a,l=e[Symbol.iterator]();!(r=(a=l.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==l.return||l.return()}finally{if(i)throw o}}return n}}},function(e,t,n){var r=n(8);e.exports=function(e,t){if(e){if(\"string\"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(n):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n?title=0&byline=0\",html:'',height:320,width:580},youtube:{regex:/(?:https?:\\/\\/)?(?:www\\.)?(?:(?:youtu\\.be\\/)|(?:youtube\\.com)\\/(?:v\\/|u\\/\\w\\/|embed\\/|watch))(?:(?:\\?v=)?([^#&?=]*))?((?:[?&]\\w*=\\w*)*)/,embedUrl:\"https://www.youtube.com/embed/<%= remote_id %>\",html:'',height:320,width:580,id:function(e){var t=a()(e,2),n=t[0],r=t[1];if(!r&&n)return n;var i={start:\"start\",end:\"end\",t:\"start\",time_continue:\"start\",list:\"list\"};return r=r.slice(1).split(\"&\").map((function(e){var t=e.split(\"=\"),r=a()(t,2),o=r[0],l=r[1];return n||\"v\"!==o?i[o]?\"\".concat(i[o],\"=\").concat(l):null:(n=l,null)})).filter((function(e){return!!e})),n+\"?\"+r.join(\"&\")}},coub:{regex:/https?:\\/\\/coub\\.com\\/view\\/([^\\/\\?\\&]+)/,embedUrl:\"https://coub.com/embed/<%= remote_id %>\",html:'',height:320,width:580},vine:{regex:/https?:\\/\\/vine\\.co\\/v\\/([^\\/\\?\\&]+)/,embedUrl:\"https://vine.co/v/<%= remote_id %>/embed/simple/\",html:'',height:320,width:580},imgur:{regex:/https?:\\/\\/(?:i\\.)?imgur\\.com.*\\/([a-zA-Z0-9]+)(?:\\.gifv)?/,embedUrl:\"http://imgur.com/<%= remote_id %>/embed\",html:'',height:500,width:540},gfycat:{regex:/https?:\\/\\/gfycat\\.com(?:\\/detail)?\\/([a-zA-Z]+)/,embedUrl:\"https://gfycat.com/ifr/<%= remote_id %>\",html:\"\",height:436,width:580},\"twitch-channel\":{regex:/https?:\\/\\/www\\.twitch\\.tv\\/([^\\/\\?\\&]*)\\/?$/,embedUrl:\"https://player.twitch.tv/?channel=<%= remote_id %>\",html:'',height:366,width:600},\"twitch-video\":{regex:/https?:\\/\\/www\\.twitch\\.tv\\/(?:[^\\/\\?\\&]*\\/v|videos)\\/([0-9]*)/,embedUrl:\"https://player.twitch.tv/?video=v<%= remote_id %>\",html:'',height:366,width:600},\"yandex-music-album\":{regex:/https?:\\/\\/music\\.yandex\\.ru\\/album\\/([0-9]*)\\/?$/,embedUrl:\"https://music.yandex.ru/iframe/#album/<%= remote_id %>/\",html:'',height:400,width:540},\"yandex-music-track\":{regex:/https?:\\/\\/music\\.yandex\\.ru\\/album\\/([0-9]*)\\/track\\/([0-9]*)/,embedUrl:\"https://music.yandex.ru/iframe/#track/<%= remote_id %>/\",html:'',height:100,width:540,id:function(e){return e.join(\"/\")}},\"yandex-music-playlist\":{regex:/https?:\\/\\/music\\.yandex\\.ru\\/users\\/([^\\/\\?\\&]*)\\/playlists\\/([0-9]*)/,embedUrl:\"https://music.yandex.ru/iframe/#playlist/<%= remote_id %>/show/cover/description/\",html:'',height:400,width:540,id:function(e){return e.join(\"/\")}},codepen:{regex:/https?:\\/\\/codepen\\.io\\/([^\\/\\?\\&]*)\\/pen\\/([^\\/\\?\\&]*)/,embedUrl:\"https://codepen.io/<%= remote_id %>?height=300&theme-id=0&default-tab=css,result&embed-version=2\",html:\"\",height:300,width:600,id:function(e){return e.join(\"/embed/\")}},instagram:{regex:/https?:\\/\\/www\\.instagram\\.com\\/p\\/([^\\/\\?\\&]+)\\/?/,embedUrl:\"https://www.instagram.com/p/<%= remote_id %>/embed\",html:'',height:505,width:400},twitter:{regex:/^https?:\\/\\/twitter\\.com\\/(?:#!\\/)?(\\w+)\\/status(?:es)?\\/(\\d+)(?:\\/.*)?$/,embedUrl:\"https://twitframe.com/show?url=https://twitter.com/<%= remote_id %>\",html:'',height:300,width:600,id:function(e){return e.join(\"/status/\")}},pinterest:{regex:/https?:\\/\\/([^\\/\\?\\&]*).pinterest.com\\/pin\\/([^\\/\\?\\&]*)\\/?$/,embedUrl:\"https://assets.pinterest.com/ext/embed.html?id=<%= remote_id %>\",html:\"\",id:function(e){return e[1]}},facebook:{regex:/https?:\\/\\/www.facebook.com\\/([^\\/\\?\\&]*)\\/(.*)/,embedUrl:\"https://www.facebook.com/plugins/post.php?href=https://www.facebook.com/<%= remote_id %>&width=500\",html:\"\",id:function(e){return e.join(\"/\")}},aparat:{regex:/(?:http[s]?:\\/\\/)?(?:www.)?aparat\\.com\\/v\\/([^\\/\\?\\&]+)\\/?/,embedUrl:\"https://www.aparat.com/video/video/embed/videohash/<%= remote_id %>/vt/frame\",html:'',height:300,width:600},miro:{regex:/https:\\/\\/miro.com\\/\\S+(\\S{12})\\/(\\S+)?/,embedUrl:\"https://miro.com/app/live-embed/<%= remote_id %>\",html:''}},h=(n(10),n(4)),m=function(){function e(t){var n=t.data,r=t.api,i=t.readOnly;c()(this,e),this.api=r,this._data={},this.element=null,this.readOnly=i,this.data=n}return d()(e,[{key:\"render\",value:function(){var t=this;if(!this.data.service){var n=document.createElement(\"div\");return this.element=n,n}var r=e.services[this.data.service].html,i=document.createElement(\"div\"),o=document.createElement(\"div\"),a=document.createElement(\"template\"),l=this.createPreloader();i.classList.add(this.CSS.baseClass,this.CSS.container,this.CSS.containerLoading),o.classList.add(this.CSS.input,this.CSS.caption),i.appendChild(l),o.contentEditable=!this.readOnly,o.dataset.placeholder=this.api.i18n.t(\"Enter a caption\"),o.innerHTML=this.data.caption||\"\",a.innerHTML=r,a.content.firstChild.setAttribute(\"src\",this.data.embed),a.content.firstChild.classList.add(this.CSS.content);var c=this.embedIsReady(i);return i.appendChild(a.content.firstChild),i.appendChild(o),c.then((function(){i.classList.remove(t.CSS.containerLoading)})),this.element=i,i}},{key:\"createPreloader\",value:function(){var e=document.createElement(\"preloader\"),t=document.createElement(\"div\");return t.textContent=this.data.source,e.classList.add(this.CSS.preloader),t.classList.add(this.CSS.url),e.appendChild(t),e}},{key:\"save\",value:function(){return this.data}},{key:\"onPaste\",value:function(t){var n=t.detail,r=n.key,i=n.data,o=e.services[r],a=o.regex,l=o.embedUrl,c=o.width,s=o.height,d=o.id,u=void 0===d?function(e){return e.shift()}:d,h=a.exec(i).slice(1),m=l.replace(/<%= remote_id %>/g,u(h));this.data={service:r,source:i,embed:m,width:c,height:s}}},{key:\"embedIsReady\",value:function(e){var t=null;return new Promise((function(n,r){(t=new MutationObserver(Object(h.debounce)(n,450))).observe(e,{childList:!0,subtree:!0})})).then((function(){t.disconnect()}))}},{key:\"data\",set:function(e){if(!(e instanceof Object))throw Error(\"Embed Tool data should be object\");var t=e.service,n=e.source,r=e.embed,i=e.width,o=e.height,a=e.caption,l=void 0===a?\"\":a;this._data={service:t||this.data.service,source:n||this.data.source,embed:r||this.data.embed,width:i||this.data.width,height:o||this.data.height,caption:l||this.data.caption||\"\"};var c=this.element;c&&c.parentNode.replaceChild(this.render(),c)},get:function(){if(this.element){var e=this.element.querySelector(\".\".concat(this.api.styles.input));this._data.caption=e?e.innerHTML:\"\"}return this._data}},{key:\"CSS\",get:function(){return{baseClass:this.api.styles.block,input:this.api.styles.input,container:\"embed-tool\",containerLoading:\"embed-tool--loading\",preloader:\"embed-tool__preloader\",caption:\"embed-tool__caption\",url:\"embed-tool__url\",content:\"embed-tool__content\"}}}],[{key:\"prepare\",value:function(t){var n=t.config,r=(void 0===n?{}:n).services,o=void 0===r?{}:r,l=Object.entries(u),c=Object.entries(o).filter((function(e){var t=a()(e,2),n=(t[0],t[1]);return\"boolean\"==typeof n&&!0===n})).map((function(e){return a()(e,1)[0]})),s=Object.entries(o).filter((function(e){var t=a()(e,2),n=(t[0],t[1]);return\"object\"===i()(n)})).filter((function(t){var n=a()(t,2),r=(n[0],n[1]);return e.checkServiceConfig(r)})).map((function(e){var t=a()(e,2),n=t[0],r=t[1];return[n,{regex:r.regex,embedUrl:r.embedUrl,html:r.html,height:r.height,width:r.width,id:r.id}]}));c.length&&(l=l.filter((function(e){var t=a()(e,1)[0];return c.includes(t)}))),l=l.concat(s),e.services=l.reduce((function(e,t){var n=a()(t,2),r=n[0],i=n[1];return r in e?(e[r]=Object.assign({},e[r],i),e):(e[r]=i,e)}),{}),e.patterns=l.reduce((function(e,t){var n=a()(t,2),r=n[0],i=n[1];return e[r]=i.regex,e}),{})}},{key:\"checkServiceConfig\",value:function(e){var t=e.regex,n=e.embedUrl,r=e.html,i=e.height,o=e.width,a=e.id,l=t&&t instanceof RegExp&&n&&\"string\"==typeof n&&r&&\"string\"==typeof r;return l=(l=(l=l&&(void 0===a||a instanceof Function))&&(void 0===i||Number.isFinite(i)))&&(void 0===o||Number.isFinite(o))}},{key:\"pasteConfig\",get:function(){return{patterns:e.patterns}}},{key:\"isReadOnlySupported\",get:function(){return!0}}]),e}()}]).default}));\n\n//# sourceURL=webpack://Docs/./node_modules/@editorjs/embed/dist/bundle.js?"); + +/***/ }), + /***/ "./node_modules/@editorjs/header/dist/bundle.js": /*!******************************************************!*\ !*** ./node_modules/@editorjs/header/dist/bundle.js ***! @@ -295,7 +306,7 @@ eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Editor; });\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.define-property */ \"./node_modules/core-js/modules/es6.object.define-property.js\");\n/* harmony import */ var core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_define_property__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_object_assign__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es6.object.assign */ \"./node_modules/core-js/modules/es6.object.assign.js\");\n/* harmony import */ var core_js_modules_es6_object_assign__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_assign__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _editorjs_editorjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @editorjs/editorjs */ \"./node_modules/@editorjs/editorjs/dist/editor.js\");\n/* harmony import */ var _editorjs_editorjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_editorjs_editorjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _editorjs_header__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @editorjs/header */ \"./node_modules/@editorjs/header/dist/bundle.js\");\n/* harmony import */ var _editorjs_header__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_editorjs_header__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _editorjs_image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @editorjs/image */ \"./node_modules/@editorjs/image/dist/bundle.js\");\n/* harmony import */ var _editorjs_image__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_editorjs_image__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _editorjs_code__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @editorjs/code */ \"./node_modules/@editorjs/code/dist/bundle.js\");\n/* harmony import */ var _editorjs_code__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_editorjs_code__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _editorjs_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @editorjs/list */ \"./node_modules/@editorjs/list/dist/bundle.js\");\n/* harmony import */ var _editorjs_list__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_editorjs_list__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _editorjs_delimiter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @editorjs/delimiter */ \"./node_modules/@editorjs/delimiter/dist/bundle.js\");\n/* harmony import */ var _editorjs_delimiter__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_editorjs_delimiter__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _editorjs_table__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @editorjs/table */ \"./node_modules/@editorjs/table/dist/table.js\");\n/* harmony import */ var _editorjs_table__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_editorjs_table__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _editorjs_warning__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @editorjs/warning */ \"./node_modules/@editorjs/warning/dist/bundle.js\");\n/* harmony import */ var _editorjs_warning__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_editorjs_warning__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _editorjs_checklist__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @editorjs/checklist */ \"./node_modules/@editorjs/checklist/dist/bundle.js\");\n/* harmony import */ var _editorjs_checklist__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_editorjs_checklist__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _editorjs_link__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @editorjs/link */ \"./node_modules/@editorjs/link/dist/bundle.js\");\n/* harmony import */ var _editorjs_link__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_editorjs_link__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _editorjs_raw__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @editorjs/raw */ \"./node_modules/@editorjs/raw/dist/bundle.js\");\n/* harmony import */ var _editorjs_raw__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_editorjs_raw__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _editorjs_inline_code__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @editorjs/inline-code */ \"./node_modules/@editorjs/inline-code/dist/bundle.js\");\n/* harmony import */ var _editorjs_inline_code__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_editorjs_inline_code__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _editorjs_marker__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @editorjs/marker */ \"./node_modules/@editorjs/marker/dist/bundle.js\");\n/* harmony import */ var _editorjs_marker__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_editorjs_marker__WEBPACK_IMPORTED_MODULE_14__);\n\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * Block Tools for the Editor\n */\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Inline Tools for the Editor\n */\n\n\n\n/**\n * Class for working with Editor.js\n */\n\nvar Editor = /*#__PURE__*/function () {\n /**\n * Creates Editor instance\n *\n * @param {object} editorConfig - configuration object for Editor.js\n * @param {object} data.blocks - data to start with\n * @param {object} options\n * @param {string} options.headerPlaceholder - placeholder for Header tool\n */\n function Editor() {\n var editorConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Editor);\n\n var defaultConfig = {\n tools: {\n header: {\n \"class\": _editorjs_header__WEBPACK_IMPORTED_MODULE_3___default.a,\n inlineToolbar: ['marker', 'inlineCode'],\n config: {\n placeholder: options.headerPlaceholder || ''\n }\n },\n image: {\n \"class\": _editorjs_image__WEBPACK_IMPORTED_MODULE_4___default.a,\n inlineToolbar: true,\n config: {\n types: 'image/*, video/mp4',\n endpoints: {\n byFile: '/api/transport/image',\n byUrl: '/api/transport/fetch'\n },\n additionalRequestData: {\n map: JSON.stringify({\n path: 'file:url',\n size: 'file:size',\n mimetype: 'file:mime'\n })\n }\n }\n },\n linkTool: {\n \"class\": _editorjs_link__WEBPACK_IMPORTED_MODULE_11___default.a,\n config: {\n endpoint: '/api/fetchUrl'\n }\n },\n code: {\n \"class\": _editorjs_code__WEBPACK_IMPORTED_MODULE_5___default.a,\n shortcut: 'CMD+SHIFT+D'\n },\n list: {\n \"class\": _editorjs_list__WEBPACK_IMPORTED_MODULE_6___default.a,\n inlineToolbar: true\n },\n delimiter: _editorjs_delimiter__WEBPACK_IMPORTED_MODULE_7___default.a,\n table: {\n \"class\": _editorjs_table__WEBPACK_IMPORTED_MODULE_8___default.a,\n inlineToolbar: true\n },\n warning: {\n \"class\": _editorjs_warning__WEBPACK_IMPORTED_MODULE_9___default.a,\n inlineToolbar: true\n },\n checklist: {\n \"class\": _editorjs_checklist__WEBPACK_IMPORTED_MODULE_10___default.a,\n inlineToolbar: true\n },\n\n /**\n * Inline Tools\n */\n inlineCode: {\n \"class\": _editorjs_inline_code__WEBPACK_IMPORTED_MODULE_13___default.a,\n shortcut: 'CMD+SHIFT+C'\n },\n marker: {\n \"class\": _editorjs_marker__WEBPACK_IMPORTED_MODULE_14___default.a,\n shortcut: 'CMD+SHIFT+M'\n },\n raw: _editorjs_raw__WEBPACK_IMPORTED_MODULE_12___default.a\n },\n data: {\n blocks: [{\n type: 'header',\n data: {\n text: '',\n level: 2\n }\n }]\n }\n };\n this.editor = new _editorjs_editorjs__WEBPACK_IMPORTED_MODULE_2___default.a(Object.assign(defaultConfig, editorConfig));\n }\n /**\n * Return Editor data\n *\n * @returns {Promise.<{}>}\n */\n\n\n _createClass(Editor, [{\n key: \"save\",\n value: function save() {\n return this.editor.saver.save();\n }\n }]);\n\n return Editor;\n}();\n\n\n\n//# sourceURL=webpack://Docs/./src/frontend/js/classes/editor.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Editor; });\n/* harmony import */ var core_js_modules_es6_object_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.object.assign */ \"./node_modules/core-js/modules/es6.object.assign.js\");\n/* harmony import */ var core_js_modules_es6_object_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_assign__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editorjs_editorjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @editorjs/editorjs */ \"./node_modules/@editorjs/editorjs/dist/editor.js\");\n/* harmony import */ var _editorjs_editorjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_editorjs_editorjs__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _editorjs_header__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @editorjs/header */ \"./node_modules/@editorjs/header/dist/bundle.js\");\n/* harmony import */ var _editorjs_header__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_editorjs_header__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _editorjs_image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @editorjs/image */ \"./node_modules/@editorjs/image/dist/bundle.js\");\n/* harmony import */ var _editorjs_image__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_editorjs_image__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _editorjs_code__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @editorjs/code */ \"./node_modules/@editorjs/code/dist/bundle.js\");\n/* harmony import */ var _editorjs_code__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_editorjs_code__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _editorjs_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @editorjs/list */ \"./node_modules/@editorjs/list/dist/bundle.js\");\n/* harmony import */ var _editorjs_list__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_editorjs_list__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _editorjs_delimiter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @editorjs/delimiter */ \"./node_modules/@editorjs/delimiter/dist/bundle.js\");\n/* harmony import */ var _editorjs_delimiter__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_editorjs_delimiter__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _editorjs_table__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @editorjs/table */ \"./node_modules/@editorjs/table/dist/table.js\");\n/* harmony import */ var _editorjs_table__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_editorjs_table__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _editorjs_warning__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @editorjs/warning */ \"./node_modules/@editorjs/warning/dist/bundle.js\");\n/* harmony import */ var _editorjs_warning__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_editorjs_warning__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _editorjs_checklist__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @editorjs/checklist */ \"./node_modules/@editorjs/checklist/dist/bundle.js\");\n/* harmony import */ var _editorjs_checklist__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_editorjs_checklist__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _editorjs_link__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @editorjs/link */ \"./node_modules/@editorjs/link/dist/bundle.js\");\n/* harmony import */ var _editorjs_link__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_editorjs_link__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _editorjs_raw__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @editorjs/raw */ \"./node_modules/@editorjs/raw/dist/bundle.js\");\n/* harmony import */ var _editorjs_raw__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_editorjs_raw__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _editorjs_embed__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @editorjs/embed */ \"./node_modules/@editorjs/embed/dist/bundle.js\");\n/* harmony import */ var _editorjs_embed__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_editorjs_embed__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _editorjs_inline_code__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @editorjs/inline-code */ \"./node_modules/@editorjs/inline-code/dist/bundle.js\");\n/* harmony import */ var _editorjs_inline_code__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_editorjs_inline_code__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _editorjs_marker__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @editorjs/marker */ \"./node_modules/@editorjs/marker/dist/bundle.js\");\n/* harmony import */ var _editorjs_marker__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_editorjs_marker__WEBPACK_IMPORTED_MODULE_14__);\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * Block Tools for the Editor\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Inline Tools for the Editor\n */\n\n\n\n/**\n * Class for working with Editor.js\n */\n\nvar Editor = /*#__PURE__*/function () {\n /**\n * Creates Editor instance\n *\n * @param {object} editorConfig - configuration object for Editor.js\n * @param {object} data.blocks - data to start with\n * @param {object} options\n * @param {string} options.headerPlaceholder - placeholder for Header tool\n */\n function Editor() {\n var editorConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Editor);\n\n var defaultConfig = {\n tools: {\n header: {\n class: _editorjs_header__WEBPACK_IMPORTED_MODULE_2___default.a,\n inlineToolbar: ['marker', 'inlineCode'],\n config: {\n placeholder: options.headerPlaceholder || ''\n }\n },\n image: {\n class: _editorjs_image__WEBPACK_IMPORTED_MODULE_3___default.a,\n inlineToolbar: true,\n config: {\n types: 'image/*, video/mp4',\n endpoints: {\n byFile: '/api/transport/image',\n byUrl: '/api/transport/fetch'\n },\n additionalRequestData: {\n map: JSON.stringify({\n path: 'file:url',\n size: 'file:size',\n mimetype: 'file:mime'\n })\n }\n }\n },\n linkTool: {\n class: _editorjs_link__WEBPACK_IMPORTED_MODULE_10___default.a,\n config: {\n endpoint: '/api/fetchUrl'\n }\n },\n code: {\n class: _editorjs_code__WEBPACK_IMPORTED_MODULE_4___default.a,\n shortcut: 'CMD+SHIFT+D'\n },\n list: {\n class: _editorjs_list__WEBPACK_IMPORTED_MODULE_5___default.a,\n inlineToolbar: true\n },\n delimiter: _editorjs_delimiter__WEBPACK_IMPORTED_MODULE_6___default.a,\n table: {\n class: _editorjs_table__WEBPACK_IMPORTED_MODULE_7___default.a,\n inlineToolbar: true\n },\n warning: {\n class: _editorjs_warning__WEBPACK_IMPORTED_MODULE_8___default.a,\n inlineToolbar: true\n },\n checklist: {\n class: _editorjs_checklist__WEBPACK_IMPORTED_MODULE_9___default.a,\n inlineToolbar: true\n },\n\n /**\n * Inline Tools\n */\n inlineCode: {\n class: _editorjs_inline_code__WEBPACK_IMPORTED_MODULE_13___default.a,\n shortcut: 'CMD+SHIFT+C'\n },\n marker: {\n class: _editorjs_marker__WEBPACK_IMPORTED_MODULE_14___default.a,\n shortcut: 'CMD+SHIFT+M'\n },\n raw: _editorjs_raw__WEBPACK_IMPORTED_MODULE_11___default.a,\n embed: _editorjs_embed__WEBPACK_IMPORTED_MODULE_12___default.a\n },\n data: {\n blocks: [{\n type: 'header',\n data: {\n text: '',\n level: 2\n }\n }]\n }\n };\n this.editor = new _editorjs_editorjs__WEBPACK_IMPORTED_MODULE_1___default.a(Object.assign(defaultConfig, editorConfig));\n }\n /**\n * Return Editor data\n *\n * @returns {Promise.<{}>}\n */\n\n\n _createClass(Editor, [{\n key: \"save\",\n value: function save() {\n return this.editor.saver.save();\n }\n }]);\n\n return Editor;\n}();\n\n\n\n//# sourceURL=webpack://Docs/./src/frontend/js/classes/editor.js?"); /***/ }) diff --git a/public/dist/main.css b/public/dist/main.css index 82e2a80..dd5265d 100644 --- a/public/dist/main.css +++ b/public/dist/main.css @@ -1 +1 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--color-text-main:#313649;--color-text-second:#5d6068;--color-line-gray:#e8e8eb;--color-link-active:#2071cc;--color-button-danger:#ff5159;--color-bg-light:#f8f7fa;--color-page-active:#ff1767;--layout-padding-horisontal:30px;--layout-padding-vertical:30px;--layout-width-aside:300px;--layout-width-main-col:650px}@media (max-width:980px){:root{--layout-padding-horisontal:15px;--layout-padding-vertical:15px}}:root{--font-mono:Menlo,Monaco,Consolas,Courier New,monospace}.docs{display:flex;padding:0 30px;padding:0 var(--layout-padding-horisontal)}@media (max-width:980px){.docs{flex-wrap:wrap}}.docs__aside{width:300px;width:var(--layout-width-aside)}@media (max-width:980px){.docs__aside{width:100%;flex-basis:100%;padding:20px 30px!important;padding:20px var(--layout-padding-horisontal)!important;margin:0 -30px;margin:0 calc(-1*var(--layout-padding-horisontal));border-bottom:1px solid #e8e8eb;border-bottom:1px solid var(--color-line-gray)}}.docs__content{flex-grow:2;word-wrap:break-word}@media (max-width:980px){.docs__content{width:100%;flex-basis:100%}}.docs__content-inner{max-width:650px;max-width:var(--layout-width-main-col);margin:0 auto}.docs__aside,.docs__content{padding:30px 0;padding:var(--layout-padding-vertical) 0}@media (max-width:980px){.docs__aside,.docs__content{padding:20px 0}}#carbonads *{margin:initial;padding:initial}#carbonads{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;max-width:330px;z-index:100;margin:15px 0 20px;overflow:hidden;background-color:#fafafa;border-radius:6px}#carbonads a{text-decoration:none}#carbonads a,#carbonads a:hover{color:inherit}#carbonads span{position:relative;display:block;overflow:hidden}#carbonads .carbon-wrap{display:flex}#carbonads .carbon-img{display:block;margin:0;line-height:1}#carbonads .carbon-img img{display:block}#carbonads .carbon-text{font-size:13px;padding:10px;margin-bottom:16px;line-height:1.5;text-align:left}#carbonads .carbon-poweredby{display:block;padding:6px 8px;background:#f1f1f2;text-align:center;text-transform:uppercase;letter-spacing:.5px;font-weight:600;font-size:8px;line-height:1;border-top-left-radius:3px;position:absolute;bottom:0;right:0}@media (max-width:980px){#carbonads{max-width:unset}#carbonads span{width:100%}}@media (min-width:980px) and (max-width:1050px),all and (min-width:1050px){#carbonads{float:right;padding:10px 10px 10px 40px;background:#fff;border-radius:0;margin:0;max-width:130px}#carbonads .carbon-wrap{flex-flow:column nowrap}#carbonads .carbon-text{line-height:normal;padding:10px 0}#carbonads .carbon-poweredby{left:0;right:unset;padding:6px 0;background:none;color:#5d6068;color:var(--color-text-second)}}@media(min-width:1300px){#carbonads{position:fixed;bottom:0;right:0}}.docs-header{display:flex;flex-shrink:0;padding:0 30px;padding:0 var(--layout-padding-horisontal);border-bottom:1px solid #e8e8eb;border-bottom:1px solid var(--color-line-gray);font-size:15.8px;line-height:50px;flex-wrap:wrap;position:relative}@media (max-width:980px){.docs-header{line-height:40px}}.docs-header a{display:inline-block;text-decoration:none}.docs-header__logo{font-weight:700;color:inherit}.docs-header__menu{display:flex;margin:0 0 0 auto;padding-left:0}@media (max-width:980px){.docs-header__menu{flex-basis:100%;font-size:12px}}.docs-header__menu li{display:inline-flex;align-items:center;list-style:none;margin-left:20px}@media (max-width:980px){.docs-header__menu li{margin-left:0;margin-right:15px}}@media (max-width:980px){.docs-header__menu-add{position:absolute;right:15px;top:15px;line-height:1em;margin:0!important}}@media (max-width:980px){.docs-header__menu-add a{font-size:0;padding:8px;margin-right:0}}.docs-header__menu a:not(.docs-header__button){color:inherit}.docs-header__menu a:not(.docs-header__button):hover{color:#2071cc;color:var(--color-link-active)}.docs-header__button{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.docs-header__button svg{margin:0 .3em 0 -.05em}.docs-header__button{background:#2071cc;background:var(--color-link-active);color:#fff;box-shadow:none}.docs-header__button:hover{background:#2065b3}.docs-header__button{margin:auto 30px auto auto}.docs-aside{font-size:14px;letter-spacing:.01em}@media (max-width:980px){.docs-aside{position:static;overflow:visible;max-height:none;font-size:13px;display:none;margin-top:20px}}.docs-aside--toggled{display:block!important}.docs-aside a{color:inherit;text-decoration:none}.docs-aside a:hover{color:#2071cc;color:var(--color-link-active)}.docs-aside__section{margin-bottom:30px}@media (max-width:980px){.docs-aside__section{margin-bottom:20px}}.docs-aside__section:last-of-type{margin-bottom:0}.docs-aside__section-title{display:inline-block;margin-bottom:10px;font-size:1.18em;font-weight:600}@media (max-width:980px){.docs-aside__section-title{margin-bottom:10px}}.docs-aside__section-list{padding-left:0;margin:0;list-style:none}.docs-aside__section-list a{display:inline-block;color:inherit;padding:8px 0;line-height:1.5em}.docs-aside__current{color:#ff1767!important;color:var(--color-page-active)!important}.docs-aside-toggler{display:none;font-size:13px;cursor:pointer;color:#5d6068;color:var(--color-text-second)}@media (max-width:980px){.docs-aside-toggler{display:block}}.docs-aside-toggler svg{margin-right:10px}.writing-header{display:flex;position:sticky;top:0;padding:15px 0;margin-top:-30px;margin-top:calc(-1*var(--layout-padding-vertical));background:#fff;box-shadow:0 3px 10px #fff;z-index:2;font-size:14px}.writing-header__save{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.writing-header__save svg{margin:0 .3em 0 -.05em}.writing-header__save{background:#2071cc;background:var(--color-link-active);color:#fff;box-shadow:none}.writing-header__save:hover{background:#2065b3}.writing-header__save{margin:auto}.writing-header__left{margin:auto 0;color:#5d6068;color:var(--color-text-second)}.writing-header__left span{margin-right:10px}.writing-header select{max-width:100px;vertical-align:bottom}.writing-buttons__remove{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.writing-buttons__remove svg{margin:0 .3em 0 -.05em}.writing-buttons__remove{background:#ff5159;background:var(--color-button-danger);color:#fff;box-shadow:none}.writing-buttons__remove:hover{background:#e65158}.uri-input{box-sizing:border-box;width:100%;padding:10px 12px;border-radius:3px;border:1px solid rgba(201,201,204,.48);box-shadow:inset 0 1px 2px 0 rgba(35,44,72,.06);outline:none}.writing-editor{font-size:15px;line-height:1.6;letter-spacing:.005em}@media (min-width:1050px){.writing-editor{margin:0 -100px}}.writing-editor .ce-code__textarea{color:#41314e;line-height:1.6em;font-size:12px;background:#f8f7fa;background:var(--color-bg-light);border:1px solid #f1f1f4;box-shadow:none}.writing-editor .ce-paragraph a{color:inherit}.writing-editor .ce-header{font-family:Lucida Grande,Lucida Sans Unicode,Lucida Sans,Geneva,Arial,sans-serif;letter-spacing:-.03em}.codex-editor__redactor .ce-block:first-of-type .ce-header{font-size:32px}.page{font-size:15px;line-height:1.6;letter-spacing:.005em}.page__header{display:flex;color:#5d6068;color:var(--color-text-second)}@media (max-width:980px){.page__header{font-size:13px}}.page__header-nav{color:inherit;text-decoration:none}@media (max-width:980px){.page__header-nav{display:none}}.page__header-nav:hover{color:#2071cc;color:var(--color-link-active)}.page__header-nav:not(:last-of-type):after{content:"\BB";margin:0 .7em 0 .45em}.page__header-time{margin-left:auto}@media (max-width:980px){.page__header-time{margin-left:0}}.page__header-button{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.page__header-button svg{margin:0 .3em 0 -.05em}.page__header-button{background:#2071cc;background:var(--color-link-active);color:#fff;box-shadow:none}.page__header-button:hover{background:#2065b3}.page__header-button{padding:5px 10px;font-size:13px;margin-left:10px}.page__title{font-family:Lucida Grande,Lucida Sans Unicode,Lucida Sans,Geneva,Arial,sans-serif;letter-spacing:-.03em;font-size:35px;font-weight:900;letter-spacing:-.04em;margin-bottom:-.1em}.page .cdx-marker{background:rgba(245,235,111,.33);padding:3px 0}.page .block-header a .inline-code,.page .inline-code{display:inline-block;background:rgba(251,241,241,.78);color:#c44545;padding:.1em .5em;border-radius:2px;margin:0 2px;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:.84em;line-height:1.4em;border-bottom:0}.page .block-header a .inline-code:hover,.page .inline-code:hover{background:rgba(251,241,241,.78)}.page__content a{text-decoration:none;border-bottom:1px solid #000;padding-bottom:1px;color:inherit}.page__content a:hover{color:#2071cc;color:var(--color-link-active);border-bottom-color:#2071cc;border-bottom-color:var(--color-link-active)}.page__content a .inline-code{margin:0;padding:.15em .5em;border-bottom:1px dashed rgba(84,151,255,.99);color:#1f6fd8;background-color:#daf1fe}.page__content a .inline-code:hover{background-color:#c8edfe}.block-paragraph .inline-code{-webkit-font-smoothing:initial;-moz-osx-font-smoothing:initial}.block-header{font-family:Lucida Grande,Lucida Sans Unicode,Lucida Sans,Geneva,Arial,sans-serif;letter-spacing:-.03em;margin:2.1em 0 .5em}.block-header--2{font-size:22px;font-weight:600}.block-header--3{font-size:18px;font-weight:600}.block-header+p{margin-top:.5em}.block-header a{text-decoration:none!important;border:0;color:inherit!important}.block-header--anchor{cursor:pointer}.block-header--anchor:before{position:absolute;content:"";margin-left:-30px;width:14px;height:19px;margin-top:.35em;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='14' height='19' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%237B7E89'%3E%3Cpath d='M8.58 11.997L2.283 5.701a1.762 1.762 0 010-2.49l.933-.935a1.762 1.762 0 012.49 0l6.298 6.297a3.508 3.508 0 00-.901-3.39L6.952 1.031a3.522 3.522 0 00-4.982 0l-.933.933a3.522 3.522 0 000 4.982l4.151 4.151c.92.92 2.218 1.208 3.392.9z'/%3E%3Cpath d='M12.958 11.628l-4.151-4.15a3.507 3.507 0 00-3.391-.899l6.296 6.296a1.76 1.76 0 010 2.49l-.933.936a1.764 1.764 0 01-2.49 0l-6.296-6.298a3.507 3.507 0 00.899 3.39l4.151 4.15a3.522 3.522 0 004.982 0l.933-.935a3.52 3.52 0 000-4.98z'/%3E%3C/g%3E%3C/svg%3E");opacity:0;transform:translateX(5px);will-change:opacity,transform;transition:all .1s ease}@media (max-width:980px){.block-header--anchor:before{display:none!important}}.block-header--anchor:hover{color:#4c4c58}.block-header--anchor:hover:before{opacity:1;transform:none}.block-header .inline-code{line-height:inherit}.block-code{background:#f8f7fa;background:var(--color-bg-light);border:1px solid #f1f1f4;border-radius:5px;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-family:var(--font-mono);line-height:1.7em;font-size:13px;overflow-x:auto;margin:15px 0}.block-code__content{display:inline-block!important;white-space:pre;word-wrap:normal;background:transparent!important;padding:15px!important;color:#41314e!important;min-width:100%;box-sizing:border-box}.block-code__content .diff{margin:0 -15px;padding-left:15px;padding-right:15px}.block-code .hljs-name,.block-code .hljs-section{color:#359f3f}.block-code .hljs-tag{color:#718c77}.block-code .hljs-attr,.block-code .hljs-selector-attr,.block-code .hljs-selector-class,.block-code .hljs-selector-id,.block-code .hljs-selector-pseudo,.block-code .hljs-title{color:#904eb3}.block-code .hljs-emphasis,.block-code .hljs-quote,.block-code .hljs-string,.block-code .hljs-strong,.block-code .hljs-template-variable,.block-code .hljs-variable{color:#c21f04}.block-list{margin:20px 0}.block-list li{margin:10px 0}.block-image{margin:40px auto;text-align:center}.block-image__content img,.block-image__content video{vertical-align:bottom;max-width:100%}.block-image__content--stretched{max-width:none!important;width:calc(100% + 120px)!important;margin-left:-60px}.block-image__content--stretched img,.block-image__content--stretched video{width:100%}.block-image__content--bordered img,.block-image__content--bordered video{border:3px solid #e8e8eb;border:3px solid var(--color-line-gray);box-sizing:border-box}.block-image__content--with-background{padding:15px;background:#f8f7fa;background:var(--color-bg-light)}.block-image__content--with-background img,.block-image__content--with-background video{max-width:60%;margin:0 auto}.block-image__caption{margin:1em auto;color:#5d6068;color:var(--color-text-second)}.block-delimiter{line-height:1.6em;width:100%;text-align:center}.block-delimiter:before{display:inline-block;content:"***";font-size:30px;line-height:65px;height:30px;letter-spacing:.2em}.block-table{margin:20px 0;table-layout:fixed;width:100%;border-radius:3px;border-collapse:collapse}.block-table,.block-table td{border:1px solid #e8e8eb;border:1px solid var(--color-line-gray)}.block-table td{padding:8px 10px}.block-warning{display:flex;padding:20px;margin:30px 0;border-radius:7px;background:#fff9ef;color:#392e2f}.block-warning__icon{margin-right:15px}.block-warning__title{font-weight:700}.block-warning__message{padding-left:15px}.block-checklist{margin:20px 0}.block-checklist__item{display:flex;box-sizing:content-box;align-items:center}.block-checklist__item-checkbox{display:inline-block;flex-shrink:0;position:relative;width:20px;height:20px;margin:0 10px 0 0;border-radius:50%;border:1px solid #d0d0d0;background:#fff;user-select:none}.block-checklist__item-checkbox:after{position:absolute;top:5px;left:5px;width:8px;height:5px;border:2px solid #fcfff4;border-top:none;border-right:none;background:transparent;content:"";opacity:0;transform:rotate(-45deg)}.block-checklist__item-checkbox--checked{background:#388ae5;border-color:#388ae5}.block-checklist__item-text{outline:none;flex-grow:1;padding:5px 0}.block-checklist__item-checkbox--checked,.block-checklist__item-checkbox:after{opacity:1}.block-link{display:block;max-width:100%;margin:40px auto;padding:25px!important;border:1px solid #e8e8eb!important;border:1px solid var(--color-line-gray)!important;box-shadow:0 1px 1px rgba(66,70,84,.03922);border-radius:2px;color:inherit!important;text-decoration:none!important}@media (max-width:980px){.block-link{box-sizing:border-box;padding:20px!important;margin:30px auto}}.block-link__image{float:right;max-width:70px;background-position:50%;background-repeat:no-repeat;background-size:contain;margin:0 0 30px 30px;border-radius:3px}@media (max-width:980px){.block-link__image{margin:0 0 15px 15px}}.block-link__title{font-size:16px;line-height:1.45em;font-weight:600}@media (max-width:980px){.block-link__title{font-size:12.2px}}.block-link__domain{display:inline-block;font-variant:small-caps;margin-top:20px;border:0!important;color:#5d6068;color:var(--color-text-second);font-size:.85em}@media (max-width:980px){.block-link__domain{margin-top:5px;font-size:12px}}.block-link__description{margin-top:10px;font-size:.9em}@media (max-width:980px){.block-link__description{margin-top:5px;font-size:12px}}.landing-body{display:flex;flex-direction:column;width:100%;height:100%}.landing-loader{position:absolute;left:50%;top:50%;z-index:-1;transform:translate(-50%,-50%)}.landing-loader>svg{width:80px;height:80px}.landing-frame{width:100%;height:100%;opacity:0;transition:opacity .5s ease;will-change:opacity}.auth-form{font-size:15px;text-align:center;margin-top:30vh}@media (max-width:980px){.auth-form h1{font-size:20px}}.auth-form p{margin:40px 0 20px}.auth-form input[type=password]{padding:9px;font-size:15px;outline:none;border-radius:3px;-webkit-appearance:none;border:1px solid #e8e8eb;border:1px solid var(--color-line-gray)}.auth-form input[type=submit]{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.auth-form input[type=submit] svg{margin:0 .3em 0 -.05em}.auth-form input[type=submit]{background:#2071cc;background:var(--color-link-active);color:#fff;box-shadow:none}.auth-form input[type=submit]:hover{background:#2065b3}.auth-form input[type=submit]{font-size:15px;padding:10px 20px;line-height:inherit;vertical-align:top}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,Verdana;color:#313649;color:var(--color-text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}svg{fill:currentColor} +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--color-text-main:#313649;--color-text-second:#5d6068;--color-line-gray:#e8e8eb;--color-link-active:#2071cc;--color-button-danger:#ff5159;--color-bg-light:#f8f7fa;--color-page-active:#ff1767;--layout-padding-horisontal:30px;--layout-padding-vertical:30px;--layout-width-aside:300px;--layout-width-main-col:650px}@media (max-width:980px){:root{--layout-padding-horisontal:15px;--layout-padding-vertical:15px}}:root{--font-mono:Menlo,Monaco,Consolas,Courier New,monospace}.docs{display:flex;padding:0 30px;padding:0 var(--layout-padding-horisontal)}@media (max-width:980px){.docs{flex-wrap:wrap}}.docs__aside{width:300px;width:var(--layout-width-aside)}@media (max-width:980px){.docs__aside{width:100%;flex-basis:100%;padding:20px 30px!important;padding:20px var(--layout-padding-horisontal)!important;margin:0 -30px;margin:0 calc(-1*var(--layout-padding-horisontal));border-bottom:1px solid #e8e8eb;border-bottom:1px solid var(--color-line-gray)}}.docs__content{flex-grow:2;word-wrap:break-word}@media (max-width:980px){.docs__content{width:100%;flex-basis:100%}}.docs__content-inner{max-width:650px;max-width:var(--layout-width-main-col);margin:0 auto}.docs__aside,.docs__content{padding:30px 0;padding:var(--layout-padding-vertical) 0}@media (max-width:980px){.docs__aside,.docs__content{padding:20px 0}}#carbonads *{margin:initial;padding:initial}#carbonads{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;max-width:330px;z-index:100;margin:15px 0 20px;overflow:hidden;background-color:#fafafa;border-radius:6px}#carbonads a{text-decoration:none}#carbonads a,#carbonads a:hover{color:inherit}#carbonads span{position:relative;display:block;overflow:hidden}#carbonads .carbon-wrap{display:flex}#carbonads .carbon-img{display:block;margin:0;line-height:1}#carbonads .carbon-img img{display:block}#carbonads .carbon-text{font-size:13px;padding:10px;margin-bottom:16px;line-height:1.5;text-align:left}#carbonads .carbon-poweredby{display:block;padding:6px 8px;background:#f1f1f2;text-align:center;text-transform:uppercase;letter-spacing:.5px;font-weight:600;font-size:8px;line-height:1;border-top-left-radius:3px;position:absolute;bottom:0;right:0}@media (max-width:980px){#carbonads{max-width:unset}#carbonads span{width:100%}}@media (min-width:980px) and (max-width:1050px),all and (min-width:1050px){#carbonads{float:right;padding:10px 10px 10px 40px;background:#fff;border-radius:0;margin:0;max-width:130px}#carbonads .carbon-wrap{flex-flow:column nowrap}#carbonads .carbon-text{line-height:normal;padding:10px 0}#carbonads .carbon-poweredby{left:0;right:unset;padding:6px 0;background:none;color:#5d6068;color:var(--color-text-second)}}@media(min-width:1300px){#carbonads{position:fixed;bottom:0;right:0}}.docs-header{display:flex;flex-shrink:0;padding:0 30px;padding:0 var(--layout-padding-horisontal);border-bottom:1px solid #e8e8eb;border-bottom:1px solid var(--color-line-gray);font-size:15.8px;line-height:50px;flex-wrap:wrap;position:relative}@media (max-width:980px){.docs-header{line-height:40px}}.docs-header a{display:inline-block;text-decoration:none}.docs-header__logo{font-weight:700;color:inherit}.docs-header__menu{display:flex;margin:0 0 0 auto;padding-left:0}@media (max-width:980px){.docs-header__menu{flex-basis:100%;font-size:12px}}.docs-header__menu li{display:inline-flex;align-items:center;list-style:none;margin-left:20px}@media (max-width:980px){.docs-header__menu li{margin-left:0;margin-right:15px}}@media (max-width:980px){.docs-header__menu-add{position:absolute;right:15px;top:15px;line-height:1em;margin:0!important}}@media (max-width:980px){.docs-header__menu-add a{font-size:0;padding:8px;margin-right:0}}.docs-header__menu a:not(.docs-header__button){color:inherit}.docs-header__menu a:not(.docs-header__button):hover{color:#2071cc;color:var(--color-link-active)}.docs-header__button{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.docs-header__button svg{margin:0 .3em 0 -.05em}.docs-header__button{background:#2071cc;background:var(--color-link-active);color:#fff;box-shadow:none}.docs-header__button:hover{background:#2065b3}.docs-header__button{margin:auto 30px auto auto}.docs-aside{font-size:14px;letter-spacing:.01em}@media (max-width:980px){.docs-aside{position:static;overflow:visible;max-height:none;font-size:13px;display:none;margin-top:20px}}.docs-aside--toggled{display:block!important}.docs-aside a{color:inherit;text-decoration:none}.docs-aside a:hover{color:#2071cc;color:var(--color-link-active)}.docs-aside__section{margin-bottom:30px}@media (max-width:980px){.docs-aside__section{margin-bottom:20px}}.docs-aside__section:last-of-type{margin-bottom:0}.docs-aside__section-title{display:inline-block;margin-bottom:10px;font-size:1.18em;font-weight:600}@media (max-width:980px){.docs-aside__section-title{margin-bottom:10px}}.docs-aside__section-list{padding-left:0;margin:0;list-style:none}.docs-aside__section-list a{display:inline-block;color:inherit;padding:8px 0;line-height:1.5em}.docs-aside__current{color:#ff1767!important;color:var(--color-page-active)!important}.docs-aside-toggler{display:none;font-size:13px;cursor:pointer;color:#5d6068;color:var(--color-text-second)}@media (max-width:980px){.docs-aside-toggler{display:block}}.docs-aside-toggler svg{margin-right:10px}.writing-header{display:flex;position:sticky;top:0;padding:15px 0;margin-top:-30px;margin-top:calc(-1*var(--layout-padding-vertical));background:#fff;box-shadow:0 3px 10px #fff;z-index:2;font-size:14px}.writing-header__save{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.writing-header__save svg{margin:0 .3em 0 -.05em}.writing-header__save{background:#2071cc;background:var(--color-link-active);color:#fff;box-shadow:none}.writing-header__save:hover{background:#2065b3}.writing-header__save{margin:auto}.writing-header__left{margin:auto 0;color:#5d6068;color:var(--color-text-second)}.writing-header__left span{margin-right:10px}.writing-header select{max-width:100px;vertical-align:bottom}.writing-buttons__remove{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.writing-buttons__remove svg{margin:0 .3em 0 -.05em}.writing-buttons__remove{background:#ff5159;background:var(--color-button-danger);color:#fff;box-shadow:none}.writing-buttons__remove:hover{background:#e65158}.uri-input{box-sizing:border-box;width:100%;padding:10px 12px;border-radius:3px;border:1px solid rgba(201,201,204,.48);box-shadow:inset 0 1px 2px 0 rgba(35,44,72,.06);outline:none}.writing-editor{font-size:15px;line-height:1.6;letter-spacing:.005em}@media (min-width:1050px){.writing-editor{margin:0 -100px}}.writing-editor .ce-code__textarea{color:#41314e;line-height:1.6em;font-size:12px;background:#f8f7fa;background:var(--color-bg-light);border:1px solid #f1f1f4;box-shadow:none}.writing-editor .ce-paragraph a{color:inherit}.writing-editor .ce-header{font-family:Lucida Grande,Lucida Sans Unicode,Lucida Sans,Geneva,Arial,sans-serif;letter-spacing:-.03em}.codex-editor__redactor .ce-block:first-of-type .ce-header{font-size:32px}.page{font-size:15px;line-height:1.6;letter-spacing:.005em}.page__header{display:flex;color:#5d6068;color:var(--color-text-second)}@media (max-width:980px){.page__header{font-size:13px}}.page__header-nav{color:inherit;text-decoration:none}@media (max-width:980px){.page__header-nav{display:none}}.page__header-nav:hover{color:#2071cc;color:var(--color-link-active)}.page__header-nav:not(:last-of-type):after{content:"\BB";margin:0 .7em 0 .45em}.page__header-time{margin-left:auto}@media (max-width:980px){.page__header-time{margin-left:0}}.page__header-button{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.page__header-button svg{margin:0 .3em 0 -.05em}.page__header-button{background:#2071cc;background:var(--color-link-active);color:#fff;box-shadow:none}.page__header-button:hover{background:#2065b3}.page__header-button{padding:5px 10px;font-size:13px;margin-left:10px}.page__title{font-family:Lucida Grande,Lucida Sans Unicode,Lucida Sans,Geneva,Arial,sans-serif;letter-spacing:-.03em;font-size:35px;font-weight:900;letter-spacing:-.04em;margin-bottom:-.1em}.page .cdx-marker{background:rgba(245,235,111,.33);padding:3px 0}.page .block-header a .inline-code,.page .inline-code{display:inline-block;background:rgba(251,241,241,.78);color:#c44545;padding:.1em .5em;border-radius:2px;margin:0 2px;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:.84em;line-height:1.4em;border-bottom:0}.page .block-header a .inline-code:hover,.page .inline-code:hover{background:rgba(251,241,241,.78)}.page__content a{text-decoration:none;border-bottom:1px solid #000;padding-bottom:1px;color:inherit}.page__content a:hover{color:#2071cc;color:var(--color-link-active);border-bottom-color:#2071cc;border-bottom-color:var(--color-link-active)}.page__content a .inline-code{margin:0;padding:.15em .5em;border-bottom:1px dashed rgba(84,151,255,.99);color:#1f6fd8;background-color:#daf1fe}.page__content a .inline-code:hover{background-color:#c8edfe}.block-paragraph .inline-code{-webkit-font-smoothing:initial;-moz-osx-font-smoothing:initial}.block-header{font-family:Lucida Grande,Lucida Sans Unicode,Lucida Sans,Geneva,Arial,sans-serif;letter-spacing:-.03em;margin:2.1em 0 .5em}.block-header--2{font-size:22px;font-weight:600}.block-header--3{font-size:18px;font-weight:600}.block-header+p{margin-top:.5em}.block-header a{text-decoration:none!important;border:0;color:inherit!important}.block-header--anchor{cursor:pointer}.block-header--anchor:before{position:absolute;content:"";margin-left:-30px;width:14px;height:19px;margin-top:.35em;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='14' height='19' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%237B7E89'%3E%3Cpath d='M8.58 11.997L2.283 5.701a1.762 1.762 0 010-2.49l.933-.935a1.762 1.762 0 012.49 0l6.298 6.297a3.508 3.508 0 00-.901-3.39L6.952 1.031a3.522 3.522 0 00-4.982 0l-.933.933a3.522 3.522 0 000 4.982l4.151 4.151c.92.92 2.218 1.208 3.392.9z'/%3E%3Cpath d='M12.958 11.628l-4.151-4.15a3.507 3.507 0 00-3.391-.899l6.296 6.296a1.76 1.76 0 010 2.49l-.933.936a1.764 1.764 0 01-2.49 0l-6.296-6.298a3.507 3.507 0 00.899 3.39l4.151 4.15a3.522 3.522 0 004.982 0l.933-.935a3.52 3.52 0 000-4.98z'/%3E%3C/g%3E%3C/svg%3E");opacity:0;transform:translateX(5px);will-change:opacity,transform;transition:all .1s ease}@media (max-width:980px){.block-header--anchor:before{display:none!important}}.block-header--anchor:hover{color:#4c4c58}.block-header--anchor:hover:before{opacity:1;transform:none}.block-header .inline-code{line-height:inherit}.block-code{background:#f8f7fa;background:var(--color-bg-light);border:1px solid #f1f1f4;border-radius:5px;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-family:var(--font-mono);line-height:1.7em;font-size:13px;overflow-x:auto;margin:15px 0}.block-code__content{display:inline-block!important;white-space:pre;word-wrap:normal;background:transparent!important;padding:15px!important;color:#41314e!important;min-width:100%;box-sizing:border-box}.block-code__content .diff{margin:0 -15px;padding-left:15px;padding-right:15px}.block-code .hljs-name,.block-code .hljs-section{color:#359f3f}.block-code .hljs-tag{color:#718c77}.block-code .hljs-attr,.block-code .hljs-selector-attr,.block-code .hljs-selector-class,.block-code .hljs-selector-id,.block-code .hljs-selector-pseudo,.block-code .hljs-title{color:#904eb3}.block-code .hljs-emphasis,.block-code .hljs-quote,.block-code .hljs-string,.block-code .hljs-strong,.block-code .hljs-template-variable,.block-code .hljs-variable{color:#c21f04}.block-list{margin:20px 0}.block-list li{margin:10px 0}.block-image{margin:40px auto;text-align:center}.block-image__content img,.block-image__content video{vertical-align:bottom;max-width:100%}.block-image__content--stretched{max-width:none!important;width:calc(100% + 120px)!important;margin-left:-60px}.block-image__content--stretched img,.block-image__content--stretched video{width:100%}.block-image__content--bordered img,.block-image__content--bordered video{border:3px solid #e8e8eb;border:3px solid var(--color-line-gray);box-sizing:border-box}.block-image__content--with-background{padding:15px;background:#f8f7fa;background:var(--color-bg-light)}.block-image__content--with-background img,.block-image__content--with-background video{max-width:60%;margin:0 auto}.block-image__caption{margin:1em auto;color:#5d6068;color:var(--color-text-second)}.block-delimiter{line-height:1.6em;width:100%;text-align:center}.block-delimiter:before{display:inline-block;content:"***";font-size:30px;line-height:65px;height:30px;letter-spacing:.2em}.block-table{margin:20px 0;table-layout:fixed;width:100%;border-radius:3px;border-collapse:collapse}.block-table,.block-table td{border:1px solid #e8e8eb;border:1px solid var(--color-line-gray)}.block-table td{padding:8px 10px}.block-warning{display:flex;padding:20px;margin:30px 0;border-radius:7px;background:#fff9ef;color:#392e2f}.block-warning__icon{margin-right:15px}.block-warning__title{font-weight:700}.block-warning__message{padding-left:15px}.block-checklist{margin:20px 0}.block-checklist__item{display:flex;box-sizing:content-box;align-items:center}.block-checklist__item-checkbox{display:inline-block;flex-shrink:0;position:relative;width:20px;height:20px;margin:0 10px 0 0;border-radius:50%;border:1px solid #d0d0d0;background:#fff;user-select:none}.block-checklist__item-checkbox:after{position:absolute;top:5px;left:5px;width:8px;height:5px;border:2px solid #fcfff4;border-top:none;border-right:none;background:transparent;content:"";opacity:0;transform:rotate(-45deg)}.block-checklist__item-checkbox--checked{background:#388ae5;border-color:#388ae5}.block-checklist__item-text{outline:none;flex-grow:1;padding:5px 0}.block-checklist__item-checkbox--checked,.block-checklist__item-checkbox:after{opacity:1}.block-link{display:block;max-width:100%;margin:40px auto;padding:25px!important;border:1px solid #e8e8eb!important;border:1px solid var(--color-line-gray)!important;box-shadow:0 1px 1px rgba(66,70,84,.03922);border-radius:2px;color:inherit!important;text-decoration:none!important}@media (max-width:980px){.block-link{box-sizing:border-box;padding:20px!important;margin:30px auto}}.block-link__image{float:right;max-width:70px;background-position:50%;background-repeat:no-repeat;background-size:contain;margin:0 0 30px 30px;border-radius:3px}@media (max-width:980px){.block-link__image{margin:0 0 15px 15px}}.block-link__title{font-size:16px;line-height:1.45em;font-weight:600}@media (max-width:980px){.block-link__title{font-size:12.2px}}.block-link__domain{display:inline-block;font-variant:small-caps;margin-top:20px;border:0!important;color:#5d6068;color:var(--color-text-second);font-size:.85em}@media (max-width:980px){.block-link__domain{margin-top:5px;font-size:12px}}.block-link__description{margin-top:10px;font-size:.9em}@media (max-width:980px){.block-link__description{margin-top:5px;font-size:12px}}.block-embed{margin:0}.block-embed__iframe{width:100%;height:450px;border:0}@media (max-width:980px){.block-embed__iframe{height:200px}}.landing-body{display:flex;flex-direction:column;width:100%;height:100%}.landing-loader{position:absolute;left:50%;top:50%;z-index:-1;transform:translate(-50%,-50%)}.landing-loader>svg{width:80px;height:80px}.landing-frame{width:100%;height:100%;opacity:0;transition:opacity .5s ease;will-change:opacity}.auth-form{font-size:15px;text-align:center;margin-top:30vh}@media (max-width:980px){.auth-form h1{font-size:20px}}.auth-form p{margin:40px 0 20px}.auth-form input[type=password]{padding:9px;font-size:15px;outline:none;border-radius:3px;-webkit-appearance:none;border:1px solid #e8e8eb;border:1px solid var(--color-line-gray)}.auth-form input[type=submit]{display:inline-block;padding:9px 15px;border-radius:3px;color:#6c6375;background:#fcfcff;box-shadow:inset 0 0 0 1px rgba(184,189,206,.2);font-size:14px;line-height:1em;text-decoration:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;border:0}.auth-form input[type=submit] svg{margin:0 .3em 0 -.05em}.auth-form input[type=submit]{background:#2071cc;background:var(--color-link-active);color:#fff;box-shadow:none}.auth-form input[type=submit]:hover{background:#2065b3}.auth-form input[type=submit]{font-size:15px;padding:10px 20px;line-height:inherit;vertical-align:top}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,Verdana;color:#313649;color:var(--color-text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}svg{fill:currentColor} diff --git a/src/frontend/js/classes/editor.js b/src/frontend/js/classes/editor.js index a5a4608..afeca67 100644 --- a/src/frontend/js/classes/editor.js +++ b/src/frontend/js/classes/editor.js @@ -6,13 +6,14 @@ import EditorJS from '@editorjs/editorjs'; import Header from '@editorjs/header'; import Image from '@editorjs/image'; import CodeTool from '@editorjs/code'; -import List from '@editorjs/nested-list'; +import List from '@editorjs/list'; import Delimiter from '@editorjs/delimiter'; import Table from '@editorjs/table'; import Warning from '@editorjs/warning'; import Checklist from '@editorjs/checklist'; import LinkTool from '@editorjs/link'; import RawTool from '@editorjs/raw'; +import Embed from '@editorjs/embed'; /** * Inline Tools for the Editor @@ -110,6 +111,8 @@ export default class Editor { }, raw: RawTool, + + embed: Embed, }, data: { blocks: [ diff --git a/src/frontend/styles/components/page.pcss b/src/frontend/styles/components/page.pcss index a0c1712..9bd73aa 100644 --- a/src/frontend/styles/components/page.pcss +++ b/src/frontend/styles/components/page.pcss @@ -484,3 +484,17 @@ } } } + +.block-embed { + margin: 0; + + &__iframe { + width: 100%; + height: 450px; + border: 0; + + @media (--mobile) { + height: 200px; + } + } +} diff --git a/src/views/pages/blocks/embed.twig b/src/views/pages/blocks/embed.twig new file mode 100644 index 0000000..aedffef --- /dev/null +++ b/src/views/pages/blocks/embed.twig @@ -0,0 +1,12 @@ +
+ + {% if caption %} + + {% endif %} +
diff --git a/src/views/pages/page.twig b/src/views/pages/page.twig index 0bcaefe..b58f92c 100644 --- a/src/views/pages/page.twig +++ b/src/views/pages/page.twig @@ -35,7 +35,7 @@ {% for block in page.body.blocks %} {# Skip first header, because it is already showed as a Title #} {% if not (loop.first and block.type == 'header') %} - {% if block.type in ['paragraph', 'header', 'image', 'code', 'list', 'delimiter', 'table', 'warning', 'checklist', 'linkTool', 'raw'] %} + {% if block.type in ['paragraph', 'header', 'image', 'code', 'list', 'delimiter', 'table', 'warning', 'checklist', 'linkTool', 'raw', 'embed'] %} {% include './blocks/' ~ block.type ~ '.twig' with block.data %} {% endif %} {% endif %} diff --git a/yarn.lock b/yarn.lock index 8a1093e..f0af7b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -764,10 +764,6 @@ version "1.2.2" resolved "https://registry.yarnpkg.com/@editorjs/marker/-/marker-1.2.2.tgz#d9261a257436bf70179c0fa1e766ab85c823c96b" -"@editorjs/nested-list@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@editorjs/nested-list/-/nested-list-1.0.2.tgz#4eaacfddb0802d0cd612bdd3269d6daa58bf7fab" - "@editorjs/raw@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@editorjs/raw/-/raw-2.3.0.tgz#d0c3daa1144e38b4d92bc5eca2faebba337bfae7"