@ckeditor/ckeditor5-minimap 35.1.0 → 35.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/minimap.js.map +1 -1
- package/package.json +16 -16
package/build/minimap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://CKEditor5.minimap/./theme/minimap.css","webpack://CKEditor5.minimap/../node_modules/css-loader/dist/runtime/api.js","webpack://CKEditor5.minimap/../node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://CKEditor5.minimap/./theme/minimap.css?7086","webpack://CKEditor5.minimap/../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://CKEditor5.minimap/./src/minimap.js","webpack://CKEditor5.minimap/./src/minimapiframeview.js","webpack://CKEditor5.minimap/./src/minimappositiontrackerview.js","webpack://CKEditor5.minimap/./src/minimapview.js","webpack://CKEditor5.minimap/./src/utils.js","webpack://CKEditor5.minimap/delegated \"./src/core.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.minimap/delegated \"./src/engine.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.minimap/delegated \"./src/ui.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.minimap/delegated \"./src/utils.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.minimap/external var \"CKEditor5.dll\"","webpack://CKEditor5.minimap/webpack/bootstrap","webpack://CKEditor5.minimap/webpack/runtime/compat get default export","webpack://CKEditor5.minimap/webpack/runtime/define property getters","webpack://CKEditor5.minimap/webpack/runtime/hasOwnProperty shorthand","webpack://CKEditor5.minimap/webpack/runtime/make namespace object","webpack://CKEditor5.minimap/./src/index.js"],"names":[],"mappings":"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ExG;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,yDAAyD;AACzD,IAAI;;AAEJ;;;AAGA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,6BAA6B;AAClD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC5QA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE4C;AACC;AACL;AAQvB;;AAEjB;;AAE8B;;AAE9B;AACA;AACA;AACA;AACA;AACe,sBAAsB,sDAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,SAAS,8DAA8D;AACvE;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,qEAA6B;;AAE9D;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,yDAAiB;AACnD,gCAAgC,yDAAiB;AACjD;;AAEA,8CAA8C,oDAAW;AACzD;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA,iBAAiB,+DAAuB;AACxC,IAAI;;AAEJ;;AAEA;AACA,wBAAwB,gEAAe;AACvC,mCAAmC,qEAAoB;AACvD,yBAAyB,gEAAe;AACxC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG,IAAI,qCAAqC;;AAE5C;AACA,wBAAwB,8DAAa;AACrC;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,4CAA4C,uDAAe;AAC3D,sBAAsB,qDAAa;;AAEnC;AACA,IAAI;;AAEJ;AACA;AACA;AACA,sBAAsB,qDAAa;;AAEnC;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0BAA0B,yDAAiB;AAC3C,qCAAqC,yDAAiB;AACtD;;AAEA;AACA,4EAA4E,qBAAqB;AACjG,iEAAiE,uBAAuB;;AAExF;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE,sCAAsC;AACtG;AACA,iBAAiB,2CAA2C;AAC5D;AACA,YAAY,sCAAsC;AAClD;;AAEA;AACA,6BAA6B,sCAAsC;AACnE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,QAAQ,sEAAsE;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB;;AAEA;AACA;AACA;AACA,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,YAAY,QAAQ;AACpB;;;;;;;;;;;;;;;;;;AC1SA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE8C;AACD;;AAE7C,aAAa,2DAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACe,gCAAgC,wDAAU;AACzD;AACA;AACA;AACA,YAAY,4BAA4B;AACxC,YAAY,QAAQ;AACpB,YAAY,aAAa;AACzB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,QAAQ;AACpB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,YAAY;AAClC,KAAK;AACL,4DAA4D,iBAAiB;AAC7E;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,2BAA2B;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAQ;AACR;AACA;AACA,mBAAmB,kCAAkC;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AClLA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEwC;AACa;;AAErD,aAAa,2DAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACe,yCAAyC,kDAAI;AAC5D;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gEAAe;AAChC;AACA;AACA;;AAEA;AACA,GAAG,IAAI,mBAAmB;;AAE1B,iBAAiB,gEAAe;AAChC;AACA,GAAG,IAAI,mBAAmB;AAC1B;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACrIA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEwC;AACG;;AAES;AACkB;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACe,0BAA0B,kDAAI;AAC7C;AACA;AACA;AACA,YAAY,4BAA4B;AACxC,YAAY,QAAQ;AACpB,YAAY,aAAa;AACzB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,QAAQ;AACpB;AACA,gBAAgB,+EAA+E;AAC/F;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,kCAAkC,mEAA0B;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,gCAAgC,0DAAiB;AACjD;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,kCAAkC;AACvD;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa,qDAAI;AACjB;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B,qDAAI;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC5NA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEmD;AACW;;AAE9D;AACA,kEAAkE,4CAA4C;AAC9G,IAAI,mDAAmD;AACvD;AACA;AACA;AACA,WAAW,kCAAkC;AAC7C,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACO;AACP;AACA;AACA,0BAA0B,8DAAY;AACtC,sBAAsB,0DAAQ;AAC9B;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY,MAAM,KAAK,gBAAgB,MAAM;AACvD,iBAAiB,cAAc,OAAO;AACtC;AACA,OAAO,4CAA4C;AACnD,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP,oBAAoB,4EAA2B;AAC/C;AACA;AACA,wDAAwD,8EAA6B;AACrF,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP,YAAY,qDAAI,iBAAiB,qEAAoB,GAAG,8DAAa;AACrE;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP,uBAAuB,qEAAoB,GAAG,0EAAyB;AACvE;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP,uBAAuB,qEAAoB,GAAG,8DAAa;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa;AACb;AACO;AACP;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,+EAA8B;;AAEjD;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;AC7IA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE+C","file":"minimap.js","sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-color-minimap-tracker-background:208,0%,51%;--ck-color-minimap-iframe-outline:#bfbfbf;--ck-color-minimap-iframe-shadow:rgba(0,0,0,.11);--ck-color-minimap-progress-background:#666}.ck.ck-minimap{background:var(--ck-color-base-background);position:absolute;user-select:none}.ck.ck-minimap,.ck.ck-minimap iframe{height:100%;width:100%}.ck.ck-minimap iframe{border:0;box-shadow:0 2px 5px var(--ck-color-minimap-iframe-shadow);margin:0;outline:1px solid var(--ck-color-minimap-iframe-outline);pointer-events:none;position:relative}.ck.ck-minimap .ck.ck-minimap__position-tracker{background:hsla(var(--ck-color-minimap-tracker-background),.2);position:absolute;top:0;transition:background .1s ease-in-out;width:100%;z-index:1}.ck.ck-minimap .ck.ck-minimap__position-tracker:hover{background:hsla(var(--ck-color-minimap-tracker-background),.3)}.ck.ck-minimap .ck.ck-minimap__position-tracker.ck-minimap__position-tracker_dragging,.ck.ck-minimap .ck.ck-minimap__position-tracker.ck-minimap__position-tracker_dragging:hover{background:hsla(var(--ck-color-minimap-tracker-background),.4)}.ck.ck-minimap .ck.ck-minimap__position-tracker.ck-minimap__position-tracker_dragging:after,.ck.ck-minimap .ck.ck-minimap__position-tracker.ck-minimap__position-tracker_dragging:hover:after{opacity:1}.ck.ck-minimap .ck.ck-minimap__position-tracker:after{background:var(--ck-color-minimap-progress-background);border:1px solid var(--ck-color-base-background);border-radius:3px;color:var(--ck-color-base-background);content:attr(data-progress) \\\"%\\\";font-size:10px;opacity:0;padding:2px 4px;position:absolute;right:5px;top:5px;transition:opacity .1s ease-in-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./theme/minimap.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,gDAAmD,CACnD,yCAAmD,CACnD,gDAAuD,CACvD,2CACD,CAEA,eAGC,0CAA2C,CAF3C,iBAAkB,CAClB,gBAsDD,CAnDC,qCAGC,WAAY,CADZ,UAED,CAEA,sBACC,QAAS,CAIT,0DAA2D,CAC3D,QAAS,CAFT,wDAAyD,CAFzD,mBAAoB,CACpB,iBAID,CAEA,gDAIC,8DAAkE,CAHlE,iBAAkB,CAElB,KAAM,CAGN,qCAAwC,CAJxC,UAAW,CAGX,SA8BD,CA3BC,sDACC,8DACD,CAEA,kLAEC,8DAKD,CAHC,8LACC,SACD,CAGD,sDAKC,sDAAuD,CAEvD,gDAAiD,CAGjD,iBAAkB,CAJlB,qCAAsC,CALtC,+BAAgC,CAQhC,cAAe,CAEf,SAAU,CAHV,eAAgB,CANhB,iBAAkB,CAElB,SAAU,CADV,OAAQ,CASR,kCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-minimap-tracker-background: 208, 0%, 51%;\\n\\t--ck-color-minimap-iframe-outline: hsl(0deg 0% 75%);\\n\\t--ck-color-minimap-iframe-shadow: hsl(0deg 0% 0% / 11%);\\n\\t--ck-color-minimap-progress-background: hsl(0,0%,40%);\\n}\\n\\n.ck.ck-minimap {\\n\\tposition: absolute;\\n\\tuser-select: none;\\n\\tbackground: var(--ck-color-base-background);\\n\\n\\t&,\\n\\t& iframe {\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t& iframe {\\n\\t\\tborder: 0;\\n\\t\\tpointer-events: none;\\n\\t\\tposition: relative;\\n\\t\\toutline: 1px solid var(--ck-color-minimap-iframe-outline);\\n\\t\\tbox-shadow: 0 2px 5px var(--ck-color-minimap-iframe-shadow);\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t& .ck.ck-minimap__position-tracker {\\n\\t\\tposition: absolute;\\n\\t\\twidth: 100%;\\n\\t\\ttop: 0;\\n\\t\\tbackground: hsla( var(--ck-color-minimap-tracker-background), .2 );\\n\\t\\tz-index: 1;\\n\\t\\ttransition: background 100ms ease-in-out;\\n\\n\\t\\t&:hover {\\n\\t\\t\\tbackground:hsla( var(--ck-color-minimap-tracker-background), .3 );\\n\\t\\t}\\n\\n\\t\\t&.ck-minimap__position-tracker_dragging,\\n\\t\\t&.ck-minimap__position-tracker_dragging:hover {\\n\\t\\t\\tbackground:hsla( var(--ck-color-minimap-tracker-background), .4 );\\n\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tcontent: attr(data-progress) \\\"%\\\";\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 5px;\\n\\t\\t\\tright: 5px;\\n\\t\\t\\tbackground: var(--ck-color-minimap-progress-background);\\n\\t\\t\\tcolor: var(--ck-color-base-background);\\n\\t\\t\\tborder: 1px solid var(--ck-color-base-background);\\n\\t\\t\\tpadding: 2px 4px;\\n\\t\\t\\tfont-size: 10px;\\n\\t\\t\\tborder-radius: 3px;\\n\\t\\t\\topacity: 0;\\n\\t\\t\\ttransition: opacity 100ms ease-in-out;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./minimap.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap/minimap\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { global } from 'ckeditor5/src/utils';\nimport MinimapView from './minimapview';\nimport {\n\tcloneEditingViewDomRoot,\n\tgetClientHeight,\n\tgetDomElementRect,\n\tgetPageStyles,\n\tgetScrollable,\n\tfindClosestScrollableAncestor\n} from './utils';\n\n// @if CK_DEBUG_MINIMAP // import RectDrawer from '@ckeditor/ckeditor5-utils/tests/_utils/rectdrawer';\n\nimport '../theme/minimap.css';\n\n/**\n * The content minimap feature.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class Minimap extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get pluginName() {\n\t\treturn 'Minimap';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\n\t\t/**\n\t\t * The reference to the view of the minimap.\n\t\t *\n\t\t * @private\n\t\t * @member {module:minimap/minimapview~MinimapView}\n\t\t */\n\t\tthis._minimapView = null;\n\n\t\t/**\n\t\t * The DOM element closest to the editable element of the editor as returned\n\t\t * by {@link module:core/editor/editorui~EditorUI#getEditableElement}.\n\t\t *\n\t\t * @private\n\t\t * @member {HTMLElement}\n\t\t */\n\t\tthis._scrollableRootAncestor = null;\n\n\t\tthis.listenTo( editor.ui, 'ready', this._onUiReady.bind( this ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdestroy() {\n\t\tthis._minimapView.destroy();\n\t\tthis._minimapView.element.remove();\n\t}\n\n\t/**\n\t * Initializes the minimap view element and starts the layout synchronization\n\t * on the editing view `render` event.\n\t *\n\t * @private\n\t */\n\t_onUiReady() {\n\t\tconst editor = this.editor;\n\n\t\t// TODO: This will not work with the multi-root editor.\n\t\tconst editingRootElement = this._editingRootElement = editor.ui.getEditableElement();\n\n\t\tthis._scrollableRootAncestor = findClosestScrollableAncestor( editingRootElement );\n\n\t\t// DOM root element is not yet attached to the document.\n\t\tif ( !editingRootElement.ownerDocument.body.contains( editingRootElement ) ) {\n\t\t\teditor.ui.once( 'update', this._onUiReady.bind( this ) );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initializeMinimapView();\n\n\t\tthis.listenTo( editor.editing.view, 'render', () => {\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t} );\n\n\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t}\n\n\t/**\n\t * Initializes the minimap view and attaches listeners that make it responsive to the environment (document)\n\t * but also allow the minimap to control the document (scroll position).\n\t *\n\t * @private\n\t */\n\t_initializeMinimapView() {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst useSimplePreview = editor.config.get( 'minimap.useSimplePreview' );\n\t\tconst minimapContainerElement = editor.config.get( 'minimap.container' );\n\t\tconst scrollableRootAncestor = this._scrollableRootAncestor;\n\n\t\t// TODO: This should be dynamic, the root width could change as the viewport scales if not fixed unit.\n\t\tconst editingRootElementWidth = getDomElementRect( this._editingRootElement ).width;\n\t\tconst minimapContainerWidth = getDomElementRect( minimapContainerElement ).width;\n\t\tconst minimapScaleRatio = minimapContainerWidth / editingRootElementWidth;\n\n\t\tconst minimapView = this._minimapView = new MinimapView( {\n\t\t\tlocale,\n\t\t\tscaleRatio: minimapScaleRatio,\n\t\t\tpageStyles: getPageStyles(),\n\t\t\textraClasses: editor.config.get( 'minimap.extraClasses' ),\n\t\t\tuseSimplePreview,\n\t\t\tdomRootClone: cloneEditingViewDomRoot( editor )\n\t\t} );\n\n\t\tminimapView.render();\n\n\t\t// Scrollable ancestor scroll -> minimap position update.\n\t\tminimapView.listenTo( global.document, 'scroll', ( evt, data ) => {\n\t\t\tif ( scrollableRootAncestor === global.document.body ) {\n\t\t\t\tif ( data.target !== global.document ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if ( data.target !== scrollableRootAncestor ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t}, { useCapture: true, usePassive: true } );\n\n\t\t// Viewport resize -> minimap position update.\n\t\tminimapView.listenTo( global.window, 'resize', () => {\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t} );\n\n\t\t// Dragging the visible content area -> document (scrollable) position update.\n\t\tminimapView.on( 'drag', ( evt, movementY ) => {\n\t\t\tlet movementYPercentage;\n\n\t\t\tif ( minimapView.scrollHeight === 0 ) {\n\t\t\t\tmovementYPercentage = 0;\n\t\t\t} else {\n\t\t\t\tmovementYPercentage = movementY / minimapView.scrollHeight;\n\t\t\t}\n\n\t\t\tconst absoluteScrollProgress = movementYPercentage *\n\t\t\t\t( scrollableRootAncestor.scrollHeight - getClientHeight( scrollableRootAncestor ) );\n\t\t\tconst scrollable = getScrollable( scrollableRootAncestor );\n\n\t\t\tscrollable.scrollBy( 0, Math.round( absoluteScrollProgress ) );\n\t\t} );\n\n\t\t// Clicking the minimap -> center the document (scrollable) to the corresponding position.\n\t\tminimapView.on( 'click', ( evt, percentage ) => {\n\t\t\tconst absoluteScrollProgress = percentage * scrollableRootAncestor.scrollHeight;\n\t\t\tconst scrollable = getScrollable( scrollableRootAncestor );\n\n\t\t\tscrollable.scrollBy( 0, Math.round( absoluteScrollProgress ) );\n\t\t} );\n\n\t\tminimapContainerElement.appendChild( minimapView.element );\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_syncMinimapToEditingRootScrollPosition() {\n\t\tconst editingRootElement = this._editingRootElement;\n\t\tconst minimapView = this._minimapView;\n\n\t\tminimapView.setContentHeight( editingRootElement.offsetHeight );\n\n\t\tconst editingRootRect = getDomElementRect( editingRootElement );\n\t\tconst scrollableRootAncestorRect = getDomElementRect( this._scrollableRootAncestor );\n\t\tlet scrollProgress;\n\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.clear();\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.draw( scrollableRootAncestorRect, { outlineColor: 'red' }, 'scrollableRootAncestor' );\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.draw( editingRootRect, { outlineColor: 'green' }, 'editingRoot' );\n\n\t\t// The root is completely visible in the scrollable ancestor.\n\t\tif ( scrollableRootAncestorRect.contains( editingRootRect ) ) {\n\t\t\tscrollProgress = 0;\n\t\t} else {\n\t\t\tif ( editingRootRect.top > scrollableRootAncestorRect.top ) {\n\t\t\t\tscrollProgress = 0;\n\t\t\t} else {\n\t\t\t\tscrollProgress = ( editingRootRect.top - scrollableRootAncestorRect.top ) /\n\t\t\t\t\t( scrollableRootAncestorRect.height - editingRootRect.height );\n\n\t\t\t\tscrollProgress = Math.max( 0, Math.min( scrollProgress, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t// The intersection helps to change the tracker height when there is a lot of padding around the root.\n\t\t// Note: It is **essential** that the height is set first because the progress depends on the correct tracker height.\n\t\tminimapView.setPositionTrackerHeight( scrollableRootAncestorRect.getIntersection( editingRootRect ).height );\n\t\tminimapView.setScrollProgress( scrollProgress );\n\t}\n}\n\n/**\n * The configuration of the minimap feature. Introduced by the {@link module:minimap/minimap~Minimap} feature.\n *\n * Read more in {@link module:minimap/minimap~MinimapConfig}.\n *\n * @member {module:minimap/minimap~MinimapConfig} module:core/editor/editorconfig~EditorConfig#minimap\n */\n\n/**\n * The configuration of the {@link module:minimap/minimap~Minimap} feature.\n *\n *\t\tClassicEditor\n *\t\t\t.create( {\n *\t\t\t\tminimap: ... // Minimap feature config.\n *\t\t\t} )\n *\t\t\t.then( ... )\n *\t\t\t.catch( ... );\n *\n * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.\n *\n * @interface MinimapConfig\n */\n\n/**\n * The DOM element container for the minimap.\n *\n * **Note**: The container must have a fixed `width` and `overflow: hidden` for the minimap to work correctly.\n *\n * @member {HTMLElement} module:minimap/minimap~MinimapConfig#container\n */\n\n/**\n * When set to `true`, the minimap will render content as simple boxes instead of replicating the look of the content (default).\n *\n * @member {Boolean} module:minimap/minimap~MinimapConfig#useSimplePreview\n */\n\n/**\n * Extra CSS class (or classes) that will be set internally on the `<body>` element of the `<iframe>` enclosing the minimap.\n *\n * By default, the minimap feature will attempt to clone all website styles and re-apply them in the `<iframe>` for the best accuracy.\n * However, this may not work if the content of your editor inherits the styles from parent containers, resulting in inconsistent\n * look and imprecise scrolling of the minimap.\n *\n * This optional configuration can address these issues by ensuring the same CSS rules apply to the content of the minimap\n * and the original content of the editor.\n *\n * For instance, consider the following DOM structure:\n *\n *\t\t<div class=\"website\">\n *\t\t\t<!-- ... -->\n *\t\t\t<div class=\"styled-container\">\n *\t\t\t\t <!-- ... -->\n *\t\t\t\t<div id=\"editor\">\n *\t\t\t\t\t<!-- content of the editor -->\n *\t\t\t\t</div>\n *\t\t\t</div>\n *\t\t\t<!-- ... -->\n *\t\t</div>\n *\n * and the following CSS styles:\n *\n *\t\t.website p {\n *\t\t\tfont-size: 13px;\n *\t\t}\n *\n *\t\t.styled-container p {\n *\t\t\tcolor: #ccc;\n *\t\t}\n *\n * To maintain the consistency of styling (`font-size` and `color` of paragraphs), you will need to pass the CSS class names\n * of these containers:\n *\n *\t\tClassicEditor\n *\t\t\t.create( document.getElementById( 'editor' ), {\n *\t\t\t\tminimap: {\n *\t\t\t\t\textraClasses: 'website styled-container'\n *\t\t\t\t}\n *\t\t\t} )\n *\t\t\t.then( ... )\n *\t\t\t.catch( ... );\n *\n * @member {String} module:minimap/minimap~MinimapConfig#extraClasses\n */\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap/minimapiframeview\n */\n\nimport { IframeView } from 'ckeditor5/src/ui';\nimport { toUnit } from 'ckeditor5/src/utils';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The internal `<iframe>` view that hosts the minimap content.\n *\n * @private\n * @extends module:ui/iframe/iframeview~IframeView\n */\nexport default class MinimapIframeView extends IframeView {\n\t/**\n\t * Creates an instance of the internal minimap iframe.\n\t *\n\t * @param {module:utils/locale~Locale} locale\n\t * @param {Object} options\n\t * @param {HTMLElement} options.domRootClone\n\t * @param {Array} options.pageStyles\n\t * @param {Number} options.scaleRatio\n\t * @param {Boolean} [options.useSimplePreview]\n\t * @param {String} [options.extraClasses]\n\t */\n\tconstructor( locale, options ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t/**\n\t\t * The CSS `top` used to scroll the minimap.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #top\n\t\t */\n\t\tthis.set( 'top', 0 );\n\n\t\t/**\n\t\t * The CSS `height` of the iframe.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #height\n\t\t */\n\t\tthis.set( 'height', 0 );\n\n\t\t/**\n\t\t * Cached view constructor options for re-use in other methods.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Object} #options\n\t\t */\n\t\tthis._options = options;\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-minimap__iframe'\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', top => toPx( top ) ),\n\t\t\t\t\theight: bind.to( 'height', height => toPx( height ) )\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\trender() {\n\t\treturn super.render().then( () => {\n\t\t\tthis._prepareDocument();\n\t\t} );\n\t}\n\n\t/**\n\t * Sets the new height of the iframe.\n\t *\n\t * @param {Number} newHeight\n\t */\n\tsetHeight( newHeight ) {\n\t\tthis.height = newHeight;\n\t}\n\n\t/**\n\t * Sets the top offset of the iframe to move it around vertically.\n\t *\n\t * @param {Number} newOffset\n\t */\n\tsetTopOffset( newOffset ) {\n\t\tthis.top = newOffset;\n\t}\n\n\t/**\n\t * Sets the internal structure of the `<iframe>` readying it to display the\n\t * minimap element.\n\t *\n\t * @private\n\t */\n\t_prepareDocument() {\n\t\tconst iframeDocument = this.element.contentWindow.document;\n\t\tconst domRootClone = iframeDocument.adoptNode( this._options.domRootClone );\n\n\t\tconst boxStyles = this._options.useSimplePreview ? `\n\t\t\t.ck.ck-editor__editable_inline img {\n\t\t\t\tfilter: contrast( 0 );\n\t\t\t}\n\n\t\t\tp, li, a, figcaption, span {\n\t\t\t\tbackground: hsl(0, 0%, 80%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 80%) !important;\n\t\t\t}\n\n\t\t\th1, h2, h3, h4 {\n\t\t\t\tbackground: hsl(0, 0%, 60%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 60%) !important;\n\t\t\t}\n\t\t` : '';\n\n\t\tconst pageStyles = this._options.pageStyles.map( definition => {\n\t\t\tif ( typeof definition === 'string' ) {\n\t\t\t\treturn `<style>${ definition }</style>`;\n\t\t\t} else {\n\t\t\t\treturn `<link rel=\"stylesheet\" type=\"text/css\" href=\"${ definition.href }\">`;\n\t\t\t}\n\t\t} ).join( '\\n' );\n\n\t\tconst html = `<!DOCTYPE html><html lang=\"en\">\n\t\t\t<head>\n\t\t\t\t<meta charset=\"utf-8\">\n\t\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t\t\t\t${ pageStyles }\n\t\t\t\t<style>\n\t\t\t\t\thtml, body {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tpadding: 0 !important;\n\t\t\t\t\t}\n\n\t\t\t\t\thtml {\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t}\n\n\t\t\t\t\tbody {\n\t\t\t\t\t\ttransform: scale( ${ this._options.scaleRatio } );\n\t\t\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t\t\toverflow: visible;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-editor__editable_inline {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tborder-color: transparent !important;\n\t\t\t\t\t\toutline-color: transparent !important;\n\t\t\t\t\t\tbox-shadow: none !important;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-content {\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t}\n\n\t\t\t\t\t${ boxStyles }\n\t\t\t\t</style>\n\t\t\t</head>\n\t\t\t<body class=\"${ this._options.extraClasses || '' }\"></body>\n\t\t</html>`;\n\n\t\tiframeDocument.open();\n\t\tiframeDocument.write( html );\n\t\tiframeDocument.close();\n\t\tiframeDocument.body.appendChild( domRootClone );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap/minimappositiontrackerview\n */\n\nimport { View } from 'ckeditor5/src/ui';\nimport { toUnit, global } from 'ckeditor5/src/utils';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The position tracker visualizing the visible subset of the content. Displayed over the minimap.\n *\n * @private\n * @extends module:ui/view~View\n */\nexport default class MinimapPositionTrackerView extends View {\n\tconstructor( locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t/**\n\t\t * The CSS `height` of the tracker visualizing the subset of the content visible to the user.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #height\n\t\t */\n\t\tthis.set( 'height', 0 );\n\n\t\t/**\n\t\t * The CSS `top` of the tracker, used to move it vertically over the minimap.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #top\n\t\t */\n\t\tthis.set( 'top', 0 );\n\n\t\t/**\n\t\t * The scroll progress (in %) displayed over the tracker when being dragged by the user.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #scrollProgress\n\t\t */\n\t\tthis.set( 'scrollProgress', 0 );\n\n\t\t/**\n\t\t * Indicates whether the tracker is being dragged by the user (e.g. using the mouse).\n\t\t *\n\t\t * @private\n\t\t * @readonly\n\t\t * @member {Boolean} #_isDragging\n\t\t */\n\t\tthis.set( '_isDragging', false );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-minimap__position-tracker',\n\t\t\t\t\tbind.if( '_isDragging', 'ck-minimap__position-tracker_dragging' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', top => toPx( top ) ),\n\t\t\t\t\theight: bind.to( 'height', height => toPx( height ) )\n\t\t\t\t},\n\t\t\t\t'data-progress': bind.to( 'scrollProgress' )\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tmousedown: bind.to( () => {\n\t\t\t\t\tthis._isDragging = true;\n\t\t\t\t} )\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Fired when the position tracker is dragged.\n\t\t *\n\t\t * @event drag\n\t\t * @param {Number} movementY The vertical movement of the tracker as a result of dragging.\n\t\t */\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\trender() {\n\t\tsuper.render();\n\n\t\tthis.listenTo( global.document, 'mousemove', ( evt, data ) => {\n\t\t\tif ( !this._isDragging ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.fire( 'drag', data.movementY );\n\t\t}, { useCapture: true } );\n\n\t\tthis.listenTo( global.document, 'mouseup', () => {\n\t\t\tthis._isDragging = false;\n\t\t}, { useCapture: true } );\n\t}\n\n\t/**\n\t * Sets the new height of the tracker to visualize the subset of the content visible to the user.\n\t *\n\t * @param {Number} newHeight\n\t */\n\tsetHeight( newHeight ) {\n\t\tthis.height = newHeight;\n\t}\n\n\t/**\n\t * Sets the top offset of the tracker to move it around vertically.\n\t *\n\t * @param {Number} newOffset\n\t */\n\tsetTopOffset( newOffset ) {\n\t\tthis.top = newOffset;\n\t}\n\n\t/**\n\t * Sets the scroll progress (in %) to inform the user using a label when the tracker is being dragged.\n\t *\n\t * @param {Number} newProgress\n\t */\n\tsetScrollProgress( newProgress ) {\n\t\tthis.scrollProgress = newProgress;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap/minimapview\n */\n\nimport { View } from 'ckeditor5/src/ui';\nimport { Rect } from 'ckeditor5/src/utils';\n\nimport MinimapIframeView from './minimapiframeview';\nimport MinimapPositionTrackerView from './minimappositiontrackerview';\n\n/**\n * The main view of the minimap. It renders the original content but scaled down with a tracker element\n * visualizing the subset of the content visible to the user and allowing interactions (scrolling, dragging).\n *\n * @private\n * @extends module:ui/view~View\n */\nexport default class MinimapView extends View {\n\t/**\n\t * Creates an instance of the minimap view.\n\t *\n\t * @param {module:utils/locale~Locale} locale\n\t * @param {Object} options\n\t * @param {HTMLElement} options.domRootClone\n\t * @param {Array} options.pageStyles\n\t * @param {Number} options.scaleRatio\n\t * @param {Boolean} [options.useSimplePreview]\n\t * @param {String} [options.extraClasses]\n\t */\n\tconstructor( { locale, scaleRatio, pageStyles, extraClasses, useSimplePreview, domRootClone } ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t/**\n\t\t * An instance of the tracker view displayed over the minimap.\n\t\t *\n\t\t * @protected\n\t\t * @readonly\n\t\t * @member {module:minimap/minimappositiontrackerview~MinimapPositionTrackerView}\n\t\t */\n\t\tthis._positionTrackerView = new MinimapPositionTrackerView( locale );\n\t\tthis._positionTrackerView.delegate( 'drag' ).to( this );\n\n\t\t/**\n\t\t * The scale ratio of the minimap relative to the original editing DOM root with the content.\n\t\t *\n\t\t * @protected\n\t\t * @readonly\n\t\t * @member {Number}\n\t\t */\n\t\tthis._scaleRatio = scaleRatio;\n\n\t\t/**\n\t\t * An instance of the iframe view that hosts the minimap.\n\t\t *\n\t\t * @protected\n\t\t * @readonly\n\t\t * @member {module:minimap/minimapiframeview~MinimapIframeView}\n\t\t */\n\t\tthis._minimapIframeView = new MinimapIframeView( locale, {\n\t\t\tuseSimplePreview,\n\t\t\tpageStyles,\n\t\t\textraClasses,\n\t\t\tscaleRatio,\n\t\t\tdomRootClone\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-minimap'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis._positionTrackerView\n\t\t\t],\n\t\t\ton: {\n\t\t\t\tclick: bind.to( this._handleMinimapClick.bind( this ) ),\n\t\t\t\twheel: bind.to( this._handleMinimapMouseWheel.bind( this ) )\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Fired when the minimap view is clicked.\n\t\t *\n\t\t * @event click\n\t\t * @param {Number} progress The number between 0 and 1 representing a place in the minimap (its height) that was clicked.\n\t\t */\n\n\t\t/**\n\t\t * Fired when the position tracker is dragged or the minimap is scrolled via mouse wheel.\n\t\t *\n\t\t * @event drag\n\t\t * @param {Number} movementY The vertical movement of the minimap as a result of dragging or scrolling.\n\t\t */\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdestroy() {\n\t\tthis._minimapIframeView.destroy();\n\n\t\tsuper.destroy();\n\t}\n\n\t/**\n\t * Returns the DOM {@link module:utils/dom/rect~Rect} height of the minimap.\n\t *\n\t * @readonly\n\t * @member {Number}\n\t */\n\tget height() {\n\t\treturn new Rect( this.element ).height;\n\t}\n\n\t/**\n\t * Returns the number of available space (pixels) the position tracker (visible subset of the content) can use to scroll vertically.\n\t *\n\t * @readonly\n\t * @member {Number}\n\t */\n\tget scrollHeight() {\n\t\treturn Math.max( 0, Math.min( this.height, this._minimapIframeView.height ) - this._positionTrackerView.height );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\trender() {\n\t\tsuper.render();\n\n\t\tthis._minimapIframeView.render();\n\n\t\tthis.element.appendChild( this._minimapIframeView.element );\n\t}\n\n\t/**\n\t * Sets the new height of the minimap (in px) to respond to the changes in the original editing DOM root.\n\t *\n\t * **Note**:The provided value should be the `offsetHeight` of the original editing DOM root.\n\t *\n\t * @param {Number} newHeight\n\t */\n\tsetContentHeight( newHeight ) {\n\t\tthis._minimapIframeView.setHeight( newHeight * this._scaleRatio );\n\t}\n\n\t/**\n\t * Sets the minimap scroll progress.\n\t *\n\t * The minimap scroll progress is linked to the original editing DOM root and its scrollable container (ancestor).\n\t * Changing the progress will alter the vertical position of the minimap (and its position tracker) and give the user an accurate\n\t * overview of the visible document.\n\t *\n\t * **Note**: The value should be between 0 and 1. 0 when the DOM root has not been scrolled, 1 when the\n\t * scrolling has reached the end.\n\t *\n\t * @param {Number} newScrollProgress\n\t */\n\tsetScrollProgress( newScrollProgress ) {\n\t\tconst iframeView = this._minimapIframeView;\n\t\tconst positionTrackerView = this._positionTrackerView;\n\n\t\t// The scrolling should end when the bottom edge of the iframe touches the bottom edge of the minimap.\n\t\tif ( iframeView.height < this.height ) {\n\t\t\tiframeView.setTopOffset( 0 );\n\t\t\tpositionTrackerView.setTopOffset( ( iframeView.height - positionTrackerView.height ) * newScrollProgress );\n\t\t} else {\n\t\t\tconst totalOffset = iframeView.height - this.height;\n\n\t\t\tiframeView.setTopOffset( -totalOffset * newScrollProgress );\n\t\t\tpositionTrackerView.setTopOffset( ( this.height - positionTrackerView.height ) * newScrollProgress );\n\t\t}\n\n\t\tpositionTrackerView.setScrollProgress( Math.round( newScrollProgress * 100 ) );\n\t}\n\n\t/**\n\t * Sets the new height of the tracker (in px) to visualize the subset of the content visible to the user.\n\t *\n\t * @param {Number} trackerHeight\n\t */\n\tsetPositionTrackerHeight( trackerHeight ) {\n\t\tthis._positionTrackerView.setHeight( trackerHeight * this._scaleRatio );\n\t}\n\n\t/**\n\t * @private\n\t * @param {Event} data DOM event data\n\t */\n\t_handleMinimapClick( data ) {\n\t\tconst positionTrackerView = this._positionTrackerView;\n\n\t\tif ( data.target === positionTrackerView.element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst trackerViewRect = new Rect( positionTrackerView.element );\n\t\tconst diff = data.clientY - trackerViewRect.top - trackerViewRect.height / 2;\n\t\tconst percentage = diff / this._minimapIframeView.height;\n\n\t\tthis.fire( 'click', percentage );\n\t}\n\n\t/**\n\t * @private\n\t * @param {Event} data DOM event data\n\t */\n\t_handleMinimapMouseWheel( data ) {\n\t\tthis.fire( 'drag', data.deltaY * this._scaleRatio );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* global CSSMediaRule */\n\n/**\n * @module minimap/utils\n */\n\nimport { Rect, global } from 'ckeditor5/src/utils';\nimport { DomConverter, Renderer } from 'ckeditor5/src/engine';\n\n/**\n * Clones the editing view DOM root by using a dedicated pair of {@link module:engine/view/renderer~Renderer} and\n * {@link module:engine/view/domconverter~DomConverter}. The DOM root clone updates incrementally to stay in sync with the\n * source root.\n *\n * @protected\n * @param {module:core/editor/editor~Editor} editor The editor instance the original editing root belongs to.\n * @param {String} rootName The name of the root to clone.\n * @returns {HTMLElement} The editing root DOM clone element.\n */\nexport function cloneEditingViewDomRoot( editor, rootName ) {\n\tconst viewDocument = editor.editing.view.document;\n\tconst viewRoot = viewDocument.getRoot( rootName );\n\tconst domConverter = new DomConverter( viewDocument );\n\tconst renderer = new Renderer( domConverter, viewDocument.selection );\n\tconst domRootClone = editor.editing.view.getDomRoot().cloneNode();\n\n\tdomConverter.bindElements( domRootClone, viewRoot );\n\n\trenderer.markToSync( 'children', viewRoot );\n\trenderer.markToSync( 'attributes', viewRoot );\n\n\tviewRoot.on( 'change:children', ( evt, node ) => renderer.markToSync( 'children', node ) );\n\tviewRoot.on( 'change:attributes', ( evt, node ) => renderer.markToSync( 'attributes', node ) );\n\tviewRoot.on( 'change:text', ( evt, node ) => renderer.markToSync( 'text', node ) );\n\n\trenderer.render();\n\n\teditor.editing.view.on( 'render', () => renderer.render() );\n\n\t// TODO: Cleanup after destruction.\n\teditor.on( 'destroy', () => {\n\t\tdomConverter.unbindDomElement( domRootClone );\n\t} );\n\n\treturn domRootClone;\n}\n\n/**\n * Harvests all web page styles, for instance, to allow re-using them in an `<iframe>` preserving the look of the content.\n *\n * The returned data format is as follows:\n *\n *\t\t[\n *\t\t\t'p { color: red; ... } h2 { font-size: 2em; ... } ...',\n *\t\t\t'.spacing { padding: 1em; ... }; ...',\n *\t\t\t'...',\n *\t\t\t{ href: 'http://link.to.external.stylesheet' },\n *\t\t\t{ href: '...' }\n *\t\t]\n *\n * **Note**: For stylesheets with `href` different than window origin, an object is returned because\n * accessing rules of these styles may cause CORS errors (depending on the configuration of the web page).\n *\n * @protected\n * @returns {Array.<String|Object>}\n */\nexport function getPageStyles() {\n\treturn Array.from( global.document.styleSheets )\n\t\t.map( styleSheet => {\n\t\t\t// CORS\n\t\t\tif ( styleSheet.href && !styleSheet.href.startsWith( global.window.location.origin ) ) {\n\t\t\t\treturn { href: styleSheet.href };\n\t\t\t}\n\n\t\t\treturn Array.from( styleSheet.cssRules )\n\t\t\t\t.filter( rule => !( rule instanceof CSSMediaRule ) )\n\t\t\t\t.map( rule => rule.cssText )\n\t\t\t\t.join( ' \\n' );\n\t\t} );\n}\n\n/**\n * TODO\n *\n * @protected\n * @returns {module:utils/dom/rect~Rect}\n */\nexport function getDomElementRect( domElement ) {\n\treturn new Rect( domElement === global.document.body ? global.window : domElement );\n}\n\n/**\n * TODO\n *\n * @protected\n * @returns {Number}\n */\nexport function getClientHeight( domElement ) {\n\treturn domElement === global.document.body ? global.window.innerHeight : domElement.clientHeight;\n}\n\n/**\n * TODO\n *\n * @protected\n * @returns {HTMLElement}\n */\nexport function getScrollable( domElement ) {\n\treturn domElement === global.document.body ? global.window : domElement;\n}\n\n/**\n * Returns the closest scrollable ancestor of a DOM element.\n *\n * TODO: Move to shared utils.\n *\n * @protected\n * @param {HTMLElement} domElement\n * @returns {HTMLElement|null}\n */\nexport function findClosestScrollableAncestor( domElement ) {\n\tdo {\n\t\tdomElement = domElement.parentElement;\n\n\t\tif ( !domElement ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst overflow = global.window.getComputedStyle( domElement ).overflowY;\n\n\t\tif ( overflow === 'auto' || overflow === 'scroll' ) {\n\t\t\tbreak;\n\t\t}\n\t} while ( domElement.tagName != 'BODY' );\n\n\treturn domElement;\n}\n","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/core.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/engine.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/ui.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/utils.js\");","module.exports = CKEditor5.dll;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap\n */\n\nexport { default as Minimap } from './minimap';\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://CKEditor5.minimap/./theme/minimap.css","webpack://CKEditor5.minimap/../node_modules/css-loader/dist/runtime/api.js","webpack://CKEditor5.minimap/../node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://CKEditor5.minimap/./theme/minimap.css?7086","webpack://CKEditor5.minimap/../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://CKEditor5.minimap/./src/minimap.js","webpack://CKEditor5.minimap/./src/minimapiframeview.js","webpack://CKEditor5.minimap/./src/minimappositiontrackerview.js","webpack://CKEditor5.minimap/./src/minimapview.js","webpack://CKEditor5.minimap/./src/utils.js","webpack://CKEditor5.minimap/delegated \"./src/core.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.minimap/delegated \"./src/engine.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.minimap/delegated \"./src/ui.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.minimap/delegated \"./src/utils.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.minimap/external var \"CKEditor5.dll\"","webpack://CKEditor5.minimap/webpack/bootstrap","webpack://CKEditor5.minimap/webpack/runtime/compat get default export","webpack://CKEditor5.minimap/webpack/runtime/define property getters","webpack://CKEditor5.minimap/webpack/runtime/hasOwnProperty shorthand","webpack://CKEditor5.minimap/webpack/runtime/make namespace object","webpack://CKEditor5.minimap/webpack/runtime/nonce","webpack://CKEditor5.minimap/./src/index.js"],"names":[],"mappings":"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ExG;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,yDAAyD;AACzD,IAAI;;AAEJ;;;AAGA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,6BAA6B;AAClD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC5QA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE4C;AACC;AACL;AAQvB;;AAEjB;;AAE8B;;AAE9B;AACA;AACA;AACA;AACA;AACe,sBAAsB,sDAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,SAAS,8DAA8D;AACvE;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,qEAA6B;;AAE9D;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,yDAAiB;AACnD,gCAAgC,yDAAiB;AACjD;;AAEA,8CAA8C,oDAAW;AACzD;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA,iBAAiB,+DAAuB;AACxC,IAAI;;AAEJ;;AAEA;AACA,wBAAwB,gEAAe;AACvC,mCAAmC,qEAAoB;AACvD,yBAAyB,gEAAe;AACxC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG,IAAI,qCAAqC;;AAE5C;AACA,wBAAwB,8DAAa;AACrC;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,4CAA4C,uDAAe;AAC3D,sBAAsB,qDAAa;;AAEnC;AACA,IAAI;;AAEJ;AACA;AACA;AACA,sBAAsB,qDAAa;;AAEnC;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0BAA0B,yDAAiB;AAC3C,qCAAqC,yDAAiB;AACtD;;AAEA;AACA,4EAA4E,qBAAqB;AACjG,iEAAiE,uBAAuB;;AAExF;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE,sCAAsC;AACtG;AACA,iBAAiB,2CAA2C;AAC5D;AACA,YAAY,sCAAsC;AAClD;;AAEA;AACA,6BAA6B,sCAAsC;AACnE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,QAAQ,sEAAsE;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB;;AAEA;AACA;AACA;AACA,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,YAAY,QAAQ;AACpB;;;;;;;;;;;;;;;;;;AC1SA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE8C;AACD;;AAE7C,aAAa,2DAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACe,gCAAgC,wDAAU;AACzD;AACA;AACA;AACA,YAAY,4BAA4B;AACxC,YAAY,QAAQ;AACpB,YAAY,aAAa;AACzB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,QAAQ;AACpB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,YAAY;AAClC,KAAK;AACL,4DAA4D,iBAAiB;AAC7E;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,2BAA2B;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAQ;AACR;AACA;AACA,mBAAmB,kCAAkC;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AClLA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEwC;AACa;;AAErD,aAAa,2DAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACe,yCAAyC,kDAAI;AAC5D;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gEAAe;AAChC;AACA;AACA;;AAEA;AACA,GAAG,IAAI,mBAAmB;;AAE1B,iBAAiB,gEAAe;AAChC;AACA,GAAG,IAAI,mBAAmB;AAC1B;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACrIA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEwC;AACG;;AAES;AACkB;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACe,0BAA0B,kDAAI;AAC7C;AACA;AACA;AACA,YAAY,4BAA4B;AACxC,YAAY,QAAQ;AACpB,YAAY,aAAa;AACzB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,QAAQ;AACpB;AACA,gBAAgB,+EAA+E;AAC/F;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,kCAAkC,mEAA0B;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,gCAAgC,0DAAiB;AACjD;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,kCAAkC;AACvD;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa,qDAAI;AACjB;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B,qDAAI;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC5NA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEmD;AACW;;AAE9D;AACA,kEAAkE,4CAA4C;AAC9G,IAAI,mDAAmD;AACvD;AACA;AACA;AACA,WAAW,kCAAkC;AAC7C,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACO;AACP;AACA;AACA,0BAA0B,8DAAY;AACtC,sBAAsB,0DAAQ;AAC9B;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY,MAAM,KAAK,gBAAgB,MAAM;AACvD,iBAAiB,cAAc,OAAO;AACtC;AACA,OAAO,4CAA4C;AACnD,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP,oBAAoB,4EAA2B;AAC/C;AACA;AACA,wDAAwD,8EAA6B;AACrF,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP,YAAY,qDAAI,iBAAiB,qEAAoB,GAAG,8DAAa;AACrE;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP,uBAAuB,qEAAoB,GAAG,0EAAyB;AACvE;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP,uBAAuB,qEAAoB,GAAG,8DAAa;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa;AACb;AACO;AACP;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,+EAA8B;;AAEjD;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;AC7IA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE+C","file":"minimap.js","sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-color-minimap-tracker-background:208,0%,51%;--ck-color-minimap-iframe-outline:#bfbfbf;--ck-color-minimap-iframe-shadow:rgba(0,0,0,.11);--ck-color-minimap-progress-background:#666}.ck.ck-minimap{background:var(--ck-color-base-background);position:absolute;user-select:none}.ck.ck-minimap,.ck.ck-minimap iframe{height:100%;width:100%}.ck.ck-minimap iframe{border:0;box-shadow:0 2px 5px var(--ck-color-minimap-iframe-shadow);margin:0;outline:1px solid var(--ck-color-minimap-iframe-outline);pointer-events:none;position:relative}.ck.ck-minimap .ck.ck-minimap__position-tracker{background:hsla(var(--ck-color-minimap-tracker-background),.2);position:absolute;top:0;transition:background .1s ease-in-out;width:100%;z-index:1}.ck.ck-minimap .ck.ck-minimap__position-tracker:hover{background:hsla(var(--ck-color-minimap-tracker-background),.3)}.ck.ck-minimap .ck.ck-minimap__position-tracker.ck-minimap__position-tracker_dragging,.ck.ck-minimap .ck.ck-minimap__position-tracker.ck-minimap__position-tracker_dragging:hover{background:hsla(var(--ck-color-minimap-tracker-background),.4)}.ck.ck-minimap .ck.ck-minimap__position-tracker.ck-minimap__position-tracker_dragging:after,.ck.ck-minimap .ck.ck-minimap__position-tracker.ck-minimap__position-tracker_dragging:hover:after{opacity:1}.ck.ck-minimap .ck.ck-minimap__position-tracker:after{background:var(--ck-color-minimap-progress-background);border:1px solid var(--ck-color-base-background);border-radius:3px;color:var(--ck-color-base-background);content:attr(data-progress) \\\"%\\\";font-size:10px;opacity:0;padding:2px 4px;position:absolute;right:5px;top:5px;transition:opacity .1s ease-in-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./theme/minimap.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,gDAAmD,CACnD,yCAAmD,CACnD,gDAAuD,CACvD,2CACD,CAEA,eAGC,0CAA2C,CAF3C,iBAAkB,CAClB,gBAsDD,CAnDC,qCAGC,WAAY,CADZ,UAED,CAEA,sBACC,QAAS,CAIT,0DAA2D,CAC3D,QAAS,CAFT,wDAAyD,CAFzD,mBAAoB,CACpB,iBAID,CAEA,gDAIC,8DAAkE,CAHlE,iBAAkB,CAElB,KAAM,CAGN,qCAAwC,CAJxC,UAAW,CAGX,SA8BD,CA3BC,sDACC,8DACD,CAEA,kLAEC,8DAKD,CAHC,8LACC,SACD,CAGD,sDAKC,sDAAuD,CAEvD,gDAAiD,CAGjD,iBAAkB,CAJlB,qCAAsC,CALtC,+BAAgC,CAQhC,cAAe,CAEf,SAAU,CAHV,eAAgB,CANhB,iBAAkB,CAElB,SAAU,CADV,OAAQ,CASR,kCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-minimap-tracker-background: 208, 0%, 51%;\\n\\t--ck-color-minimap-iframe-outline: hsl(0deg 0% 75%);\\n\\t--ck-color-minimap-iframe-shadow: hsl(0deg 0% 0% / 11%);\\n\\t--ck-color-minimap-progress-background: hsl(0,0%,40%);\\n}\\n\\n.ck.ck-minimap {\\n\\tposition: absolute;\\n\\tuser-select: none;\\n\\tbackground: var(--ck-color-base-background);\\n\\n\\t&,\\n\\t& iframe {\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t& iframe {\\n\\t\\tborder: 0;\\n\\t\\tpointer-events: none;\\n\\t\\tposition: relative;\\n\\t\\toutline: 1px solid var(--ck-color-minimap-iframe-outline);\\n\\t\\tbox-shadow: 0 2px 5px var(--ck-color-minimap-iframe-shadow);\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t& .ck.ck-minimap__position-tracker {\\n\\t\\tposition: absolute;\\n\\t\\twidth: 100%;\\n\\t\\ttop: 0;\\n\\t\\tbackground: hsla( var(--ck-color-minimap-tracker-background), .2 );\\n\\t\\tz-index: 1;\\n\\t\\ttransition: background 100ms ease-in-out;\\n\\n\\t\\t&:hover {\\n\\t\\t\\tbackground:hsla( var(--ck-color-minimap-tracker-background), .3 );\\n\\t\\t}\\n\\n\\t\\t&.ck-minimap__position-tracker_dragging,\\n\\t\\t&.ck-minimap__position-tracker_dragging:hover {\\n\\t\\t\\tbackground:hsla( var(--ck-color-minimap-tracker-background), .4 );\\n\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tcontent: attr(data-progress) \\\"%\\\";\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 5px;\\n\\t\\t\\tright: 5px;\\n\\t\\t\\tbackground: var(--ck-color-minimap-progress-background);\\n\\t\\t\\tcolor: var(--ck-color-base-background);\\n\\t\\t\\tborder: 1px solid var(--ck-color-base-background);\\n\\t\\t\\tpadding: 2px 4px;\\n\\t\\t\\tfont-size: 10px;\\n\\t\\t\\tborder-radius: 3px;\\n\\t\\t\\topacity: 0;\\n\\t\\t\\ttransition: opacity 100ms ease-in-out;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./minimap.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap/minimap\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { global } from 'ckeditor5/src/utils';\nimport MinimapView from './minimapview';\nimport {\n\tcloneEditingViewDomRoot,\n\tgetClientHeight,\n\tgetDomElementRect,\n\tgetPageStyles,\n\tgetScrollable,\n\tfindClosestScrollableAncestor\n} from './utils';\n\n// @if CK_DEBUG_MINIMAP // import RectDrawer from '@ckeditor/ckeditor5-utils/tests/_utils/rectdrawer';\n\nimport '../theme/minimap.css';\n\n/**\n * The content minimap feature.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class Minimap extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get pluginName() {\n\t\treturn 'Minimap';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\n\t\t/**\n\t\t * The reference to the view of the minimap.\n\t\t *\n\t\t * @private\n\t\t * @member {module:minimap/minimapview~MinimapView}\n\t\t */\n\t\tthis._minimapView = null;\n\n\t\t/**\n\t\t * The DOM element closest to the editable element of the editor as returned\n\t\t * by {@link module:core/editor/editorui~EditorUI#getEditableElement}.\n\t\t *\n\t\t * @private\n\t\t * @member {HTMLElement}\n\t\t */\n\t\tthis._scrollableRootAncestor = null;\n\n\t\tthis.listenTo( editor.ui, 'ready', this._onUiReady.bind( this ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdestroy() {\n\t\tthis._minimapView.destroy();\n\t\tthis._minimapView.element.remove();\n\t}\n\n\t/**\n\t * Initializes the minimap view element and starts the layout synchronization\n\t * on the editing view `render` event.\n\t *\n\t * @private\n\t */\n\t_onUiReady() {\n\t\tconst editor = this.editor;\n\n\t\t// TODO: This will not work with the multi-root editor.\n\t\tconst editingRootElement = this._editingRootElement = editor.ui.getEditableElement();\n\n\t\tthis._scrollableRootAncestor = findClosestScrollableAncestor( editingRootElement );\n\n\t\t// DOM root element is not yet attached to the document.\n\t\tif ( !editingRootElement.ownerDocument.body.contains( editingRootElement ) ) {\n\t\t\teditor.ui.once( 'update', this._onUiReady.bind( this ) );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initializeMinimapView();\n\n\t\tthis.listenTo( editor.editing.view, 'render', () => {\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t} );\n\n\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t}\n\n\t/**\n\t * Initializes the minimap view and attaches listeners that make it responsive to the environment (document)\n\t * but also allow the minimap to control the document (scroll position).\n\t *\n\t * @private\n\t */\n\t_initializeMinimapView() {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst useSimplePreview = editor.config.get( 'minimap.useSimplePreview' );\n\t\tconst minimapContainerElement = editor.config.get( 'minimap.container' );\n\t\tconst scrollableRootAncestor = this._scrollableRootAncestor;\n\n\t\t// TODO: This should be dynamic, the root width could change as the viewport scales if not fixed unit.\n\t\tconst editingRootElementWidth = getDomElementRect( this._editingRootElement ).width;\n\t\tconst minimapContainerWidth = getDomElementRect( minimapContainerElement ).width;\n\t\tconst minimapScaleRatio = minimapContainerWidth / editingRootElementWidth;\n\n\t\tconst minimapView = this._minimapView = new MinimapView( {\n\t\t\tlocale,\n\t\t\tscaleRatio: minimapScaleRatio,\n\t\t\tpageStyles: getPageStyles(),\n\t\t\textraClasses: editor.config.get( 'minimap.extraClasses' ),\n\t\t\tuseSimplePreview,\n\t\t\tdomRootClone: cloneEditingViewDomRoot( editor )\n\t\t} );\n\n\t\tminimapView.render();\n\n\t\t// Scrollable ancestor scroll -> minimap position update.\n\t\tminimapView.listenTo( global.document, 'scroll', ( evt, data ) => {\n\t\t\tif ( scrollableRootAncestor === global.document.body ) {\n\t\t\t\tif ( data.target !== global.document ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if ( data.target !== scrollableRootAncestor ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t}, { useCapture: true, usePassive: true } );\n\n\t\t// Viewport resize -> minimap position update.\n\t\tminimapView.listenTo( global.window, 'resize', () => {\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t} );\n\n\t\t// Dragging the visible content area -> document (scrollable) position update.\n\t\tminimapView.on( 'drag', ( evt, movementY ) => {\n\t\t\tlet movementYPercentage;\n\n\t\t\tif ( minimapView.scrollHeight === 0 ) {\n\t\t\t\tmovementYPercentage = 0;\n\t\t\t} else {\n\t\t\t\tmovementYPercentage = movementY / minimapView.scrollHeight;\n\t\t\t}\n\n\t\t\tconst absoluteScrollProgress = movementYPercentage *\n\t\t\t\t( scrollableRootAncestor.scrollHeight - getClientHeight( scrollableRootAncestor ) );\n\t\t\tconst scrollable = getScrollable( scrollableRootAncestor );\n\n\t\t\tscrollable.scrollBy( 0, Math.round( absoluteScrollProgress ) );\n\t\t} );\n\n\t\t// Clicking the minimap -> center the document (scrollable) to the corresponding position.\n\t\tminimapView.on( 'click', ( evt, percentage ) => {\n\t\t\tconst absoluteScrollProgress = percentage * scrollableRootAncestor.scrollHeight;\n\t\t\tconst scrollable = getScrollable( scrollableRootAncestor );\n\n\t\t\tscrollable.scrollBy( 0, Math.round( absoluteScrollProgress ) );\n\t\t} );\n\n\t\tminimapContainerElement.appendChild( minimapView.element );\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_syncMinimapToEditingRootScrollPosition() {\n\t\tconst editingRootElement = this._editingRootElement;\n\t\tconst minimapView = this._minimapView;\n\n\t\tminimapView.setContentHeight( editingRootElement.offsetHeight );\n\n\t\tconst editingRootRect = getDomElementRect( editingRootElement );\n\t\tconst scrollableRootAncestorRect = getDomElementRect( this._scrollableRootAncestor );\n\t\tlet scrollProgress;\n\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.clear();\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.draw( scrollableRootAncestorRect, { outlineColor: 'red' }, 'scrollableRootAncestor' );\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.draw( editingRootRect, { outlineColor: 'green' }, 'editingRoot' );\n\n\t\t// The root is completely visible in the scrollable ancestor.\n\t\tif ( scrollableRootAncestorRect.contains( editingRootRect ) ) {\n\t\t\tscrollProgress = 0;\n\t\t} else {\n\t\t\tif ( editingRootRect.top > scrollableRootAncestorRect.top ) {\n\t\t\t\tscrollProgress = 0;\n\t\t\t} else {\n\t\t\t\tscrollProgress = ( editingRootRect.top - scrollableRootAncestorRect.top ) /\n\t\t\t\t\t( scrollableRootAncestorRect.height - editingRootRect.height );\n\n\t\t\t\tscrollProgress = Math.max( 0, Math.min( scrollProgress, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t// The intersection helps to change the tracker height when there is a lot of padding around the root.\n\t\t// Note: It is **essential** that the height is set first because the progress depends on the correct tracker height.\n\t\tminimapView.setPositionTrackerHeight( scrollableRootAncestorRect.getIntersection( editingRootRect ).height );\n\t\tminimapView.setScrollProgress( scrollProgress );\n\t}\n}\n\n/**\n * The configuration of the minimap feature. Introduced by the {@link module:minimap/minimap~Minimap} feature.\n *\n * Read more in {@link module:minimap/minimap~MinimapConfig}.\n *\n * @member {module:minimap/minimap~MinimapConfig} module:core/editor/editorconfig~EditorConfig#minimap\n */\n\n/**\n * The configuration of the {@link module:minimap/minimap~Minimap} feature.\n *\n *\t\tClassicEditor\n *\t\t\t.create( {\n *\t\t\t\tminimap: ... // Minimap feature config.\n *\t\t\t} )\n *\t\t\t.then( ... )\n *\t\t\t.catch( ... );\n *\n * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.\n *\n * @interface MinimapConfig\n */\n\n/**\n * The DOM element container for the minimap.\n *\n * **Note**: The container must have a fixed `width` and `overflow: hidden` for the minimap to work correctly.\n *\n * @member {HTMLElement} module:minimap/minimap~MinimapConfig#container\n */\n\n/**\n * When set to `true`, the minimap will render content as simple boxes instead of replicating the look of the content (default).\n *\n * @member {Boolean} module:minimap/minimap~MinimapConfig#useSimplePreview\n */\n\n/**\n * Extra CSS class (or classes) that will be set internally on the `<body>` element of the `<iframe>` enclosing the minimap.\n *\n * By default, the minimap feature will attempt to clone all website styles and re-apply them in the `<iframe>` for the best accuracy.\n * However, this may not work if the content of your editor inherits the styles from parent containers, resulting in inconsistent\n * look and imprecise scrolling of the minimap.\n *\n * This optional configuration can address these issues by ensuring the same CSS rules apply to the content of the minimap\n * and the original content of the editor.\n *\n * For instance, consider the following DOM structure:\n *\n *\t\t<div class=\"website\">\n *\t\t\t<!-- ... -->\n *\t\t\t<div class=\"styled-container\">\n *\t\t\t\t <!-- ... -->\n *\t\t\t\t<div id=\"editor\">\n *\t\t\t\t\t<!-- content of the editor -->\n *\t\t\t\t</div>\n *\t\t\t</div>\n *\t\t\t<!-- ... -->\n *\t\t</div>\n *\n * and the following CSS styles:\n *\n *\t\t.website p {\n *\t\t\tfont-size: 13px;\n *\t\t}\n *\n *\t\t.styled-container p {\n *\t\t\tcolor: #ccc;\n *\t\t}\n *\n * To maintain the consistency of styling (`font-size` and `color` of paragraphs), you will need to pass the CSS class names\n * of these containers:\n *\n *\t\tClassicEditor\n *\t\t\t.create( document.getElementById( 'editor' ), {\n *\t\t\t\tminimap: {\n *\t\t\t\t\textraClasses: 'website styled-container'\n *\t\t\t\t}\n *\t\t\t} )\n *\t\t\t.then( ... )\n *\t\t\t.catch( ... );\n *\n * @member {String} module:minimap/minimap~MinimapConfig#extraClasses\n */\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap/minimapiframeview\n */\n\nimport { IframeView } from 'ckeditor5/src/ui';\nimport { toUnit } from 'ckeditor5/src/utils';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The internal `<iframe>` view that hosts the minimap content.\n *\n * @private\n * @extends module:ui/iframe/iframeview~IframeView\n */\nexport default class MinimapIframeView extends IframeView {\n\t/**\n\t * Creates an instance of the internal minimap iframe.\n\t *\n\t * @param {module:utils/locale~Locale} locale\n\t * @param {Object} options\n\t * @param {HTMLElement} options.domRootClone\n\t * @param {Array} options.pageStyles\n\t * @param {Number} options.scaleRatio\n\t * @param {Boolean} [options.useSimplePreview]\n\t * @param {String} [options.extraClasses]\n\t */\n\tconstructor( locale, options ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t/**\n\t\t * The CSS `top` used to scroll the minimap.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #top\n\t\t */\n\t\tthis.set( 'top', 0 );\n\n\t\t/**\n\t\t * The CSS `height` of the iframe.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #height\n\t\t */\n\t\tthis.set( 'height', 0 );\n\n\t\t/**\n\t\t * Cached view constructor options for re-use in other methods.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Object} #options\n\t\t */\n\t\tthis._options = options;\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-minimap__iframe'\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', top => toPx( top ) ),\n\t\t\t\t\theight: bind.to( 'height', height => toPx( height ) )\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\trender() {\n\t\treturn super.render().then( () => {\n\t\t\tthis._prepareDocument();\n\t\t} );\n\t}\n\n\t/**\n\t * Sets the new height of the iframe.\n\t *\n\t * @param {Number} newHeight\n\t */\n\tsetHeight( newHeight ) {\n\t\tthis.height = newHeight;\n\t}\n\n\t/**\n\t * Sets the top offset of the iframe to move it around vertically.\n\t *\n\t * @param {Number} newOffset\n\t */\n\tsetTopOffset( newOffset ) {\n\t\tthis.top = newOffset;\n\t}\n\n\t/**\n\t * Sets the internal structure of the `<iframe>` readying it to display the\n\t * minimap element.\n\t *\n\t * @private\n\t */\n\t_prepareDocument() {\n\t\tconst iframeDocument = this.element.contentWindow.document;\n\t\tconst domRootClone = iframeDocument.adoptNode( this._options.domRootClone );\n\n\t\tconst boxStyles = this._options.useSimplePreview ? `\n\t\t\t.ck.ck-editor__editable_inline img {\n\t\t\t\tfilter: contrast( 0 );\n\t\t\t}\n\n\t\t\tp, li, a, figcaption, span {\n\t\t\t\tbackground: hsl(0, 0%, 80%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 80%) !important;\n\t\t\t}\n\n\t\t\th1, h2, h3, h4 {\n\t\t\t\tbackground: hsl(0, 0%, 60%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 60%) !important;\n\t\t\t}\n\t\t` : '';\n\n\t\tconst pageStyles = this._options.pageStyles.map( definition => {\n\t\t\tif ( typeof definition === 'string' ) {\n\t\t\t\treturn `<style>${ definition }</style>`;\n\t\t\t} else {\n\t\t\t\treturn `<link rel=\"stylesheet\" type=\"text/css\" href=\"${ definition.href }\">`;\n\t\t\t}\n\t\t} ).join( '\\n' );\n\n\t\tconst html = `<!DOCTYPE html><html lang=\"en\">\n\t\t\t<head>\n\t\t\t\t<meta charset=\"utf-8\">\n\t\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t\t\t\t${ pageStyles }\n\t\t\t\t<style>\n\t\t\t\t\thtml, body {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tpadding: 0 !important;\n\t\t\t\t\t}\n\n\t\t\t\t\thtml {\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t}\n\n\t\t\t\t\tbody {\n\t\t\t\t\t\ttransform: scale( ${ this._options.scaleRatio } );\n\t\t\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t\t\toverflow: visible;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-editor__editable_inline {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tborder-color: transparent !important;\n\t\t\t\t\t\toutline-color: transparent !important;\n\t\t\t\t\t\tbox-shadow: none !important;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-content {\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t}\n\n\t\t\t\t\t${ boxStyles }\n\t\t\t\t</style>\n\t\t\t</head>\n\t\t\t<body class=\"${ this._options.extraClasses || '' }\"></body>\n\t\t</html>`;\n\n\t\tiframeDocument.open();\n\t\tiframeDocument.write( html );\n\t\tiframeDocument.close();\n\t\tiframeDocument.body.appendChild( domRootClone );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap/minimappositiontrackerview\n */\n\nimport { View } from 'ckeditor5/src/ui';\nimport { toUnit, global } from 'ckeditor5/src/utils';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The position tracker visualizing the visible subset of the content. Displayed over the minimap.\n *\n * @private\n * @extends module:ui/view~View\n */\nexport default class MinimapPositionTrackerView extends View {\n\tconstructor( locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t/**\n\t\t * The CSS `height` of the tracker visualizing the subset of the content visible to the user.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #height\n\t\t */\n\t\tthis.set( 'height', 0 );\n\n\t\t/**\n\t\t * The CSS `top` of the tracker, used to move it vertically over the minimap.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #top\n\t\t */\n\t\tthis.set( 'top', 0 );\n\n\t\t/**\n\t\t * The scroll progress (in %) displayed over the tracker when being dragged by the user.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #scrollProgress\n\t\t */\n\t\tthis.set( 'scrollProgress', 0 );\n\n\t\t/**\n\t\t * Indicates whether the tracker is being dragged by the user (e.g. using the mouse).\n\t\t *\n\t\t * @private\n\t\t * @readonly\n\t\t * @member {Boolean} #_isDragging\n\t\t */\n\t\tthis.set( '_isDragging', false );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-minimap__position-tracker',\n\t\t\t\t\tbind.if( '_isDragging', 'ck-minimap__position-tracker_dragging' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', top => toPx( top ) ),\n\t\t\t\t\theight: bind.to( 'height', height => toPx( height ) )\n\t\t\t\t},\n\t\t\t\t'data-progress': bind.to( 'scrollProgress' )\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tmousedown: bind.to( () => {\n\t\t\t\t\tthis._isDragging = true;\n\t\t\t\t} )\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Fired when the position tracker is dragged.\n\t\t *\n\t\t * @event drag\n\t\t * @param {Number} movementY The vertical movement of the tracker as a result of dragging.\n\t\t */\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\trender() {\n\t\tsuper.render();\n\n\t\tthis.listenTo( global.document, 'mousemove', ( evt, data ) => {\n\t\t\tif ( !this._isDragging ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.fire( 'drag', data.movementY );\n\t\t}, { useCapture: true } );\n\n\t\tthis.listenTo( global.document, 'mouseup', () => {\n\t\t\tthis._isDragging = false;\n\t\t}, { useCapture: true } );\n\t}\n\n\t/**\n\t * Sets the new height of the tracker to visualize the subset of the content visible to the user.\n\t *\n\t * @param {Number} newHeight\n\t */\n\tsetHeight( newHeight ) {\n\t\tthis.height = newHeight;\n\t}\n\n\t/**\n\t * Sets the top offset of the tracker to move it around vertically.\n\t *\n\t * @param {Number} newOffset\n\t */\n\tsetTopOffset( newOffset ) {\n\t\tthis.top = newOffset;\n\t}\n\n\t/**\n\t * Sets the scroll progress (in %) to inform the user using a label when the tracker is being dragged.\n\t *\n\t * @param {Number} newProgress\n\t */\n\tsetScrollProgress( newProgress ) {\n\t\tthis.scrollProgress = newProgress;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap/minimapview\n */\n\nimport { View } from 'ckeditor5/src/ui';\nimport { Rect } from 'ckeditor5/src/utils';\n\nimport MinimapIframeView from './minimapiframeview';\nimport MinimapPositionTrackerView from './minimappositiontrackerview';\n\n/**\n * The main view of the minimap. It renders the original content but scaled down with a tracker element\n * visualizing the subset of the content visible to the user and allowing interactions (scrolling, dragging).\n *\n * @private\n * @extends module:ui/view~View\n */\nexport default class MinimapView extends View {\n\t/**\n\t * Creates an instance of the minimap view.\n\t *\n\t * @param {module:utils/locale~Locale} locale\n\t * @param {Object} options\n\t * @param {HTMLElement} options.domRootClone\n\t * @param {Array} options.pageStyles\n\t * @param {Number} options.scaleRatio\n\t * @param {Boolean} [options.useSimplePreview]\n\t * @param {String} [options.extraClasses]\n\t */\n\tconstructor( { locale, scaleRatio, pageStyles, extraClasses, useSimplePreview, domRootClone } ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t/**\n\t\t * An instance of the tracker view displayed over the minimap.\n\t\t *\n\t\t * @protected\n\t\t * @readonly\n\t\t * @member {module:minimap/minimappositiontrackerview~MinimapPositionTrackerView}\n\t\t */\n\t\tthis._positionTrackerView = new MinimapPositionTrackerView( locale );\n\t\tthis._positionTrackerView.delegate( 'drag' ).to( this );\n\n\t\t/**\n\t\t * The scale ratio of the minimap relative to the original editing DOM root with the content.\n\t\t *\n\t\t * @protected\n\t\t * @readonly\n\t\t * @member {Number}\n\t\t */\n\t\tthis._scaleRatio = scaleRatio;\n\n\t\t/**\n\t\t * An instance of the iframe view that hosts the minimap.\n\t\t *\n\t\t * @protected\n\t\t * @readonly\n\t\t * @member {module:minimap/minimapiframeview~MinimapIframeView}\n\t\t */\n\t\tthis._minimapIframeView = new MinimapIframeView( locale, {\n\t\t\tuseSimplePreview,\n\t\t\tpageStyles,\n\t\t\textraClasses,\n\t\t\tscaleRatio,\n\t\t\tdomRootClone\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-minimap'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis._positionTrackerView\n\t\t\t],\n\t\t\ton: {\n\t\t\t\tclick: bind.to( this._handleMinimapClick.bind( this ) ),\n\t\t\t\twheel: bind.to( this._handleMinimapMouseWheel.bind( this ) )\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Fired when the minimap view is clicked.\n\t\t *\n\t\t * @event click\n\t\t * @param {Number} progress The number between 0 and 1 representing a place in the minimap (its height) that was clicked.\n\t\t */\n\n\t\t/**\n\t\t * Fired when the position tracker is dragged or the minimap is scrolled via mouse wheel.\n\t\t *\n\t\t * @event drag\n\t\t * @param {Number} movementY The vertical movement of the minimap as a result of dragging or scrolling.\n\t\t */\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdestroy() {\n\t\tthis._minimapIframeView.destroy();\n\n\t\tsuper.destroy();\n\t}\n\n\t/**\n\t * Returns the DOM {@link module:utils/dom/rect~Rect} height of the minimap.\n\t *\n\t * @readonly\n\t * @member {Number}\n\t */\n\tget height() {\n\t\treturn new Rect( this.element ).height;\n\t}\n\n\t/**\n\t * Returns the number of available space (pixels) the position tracker (visible subset of the content) can use to scroll vertically.\n\t *\n\t * @readonly\n\t * @member {Number}\n\t */\n\tget scrollHeight() {\n\t\treturn Math.max( 0, Math.min( this.height, this._minimapIframeView.height ) - this._positionTrackerView.height );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\trender() {\n\t\tsuper.render();\n\n\t\tthis._minimapIframeView.render();\n\n\t\tthis.element.appendChild( this._minimapIframeView.element );\n\t}\n\n\t/**\n\t * Sets the new height of the minimap (in px) to respond to the changes in the original editing DOM root.\n\t *\n\t * **Note**:The provided value should be the `offsetHeight` of the original editing DOM root.\n\t *\n\t * @param {Number} newHeight\n\t */\n\tsetContentHeight( newHeight ) {\n\t\tthis._minimapIframeView.setHeight( newHeight * this._scaleRatio );\n\t}\n\n\t/**\n\t * Sets the minimap scroll progress.\n\t *\n\t * The minimap scroll progress is linked to the original editing DOM root and its scrollable container (ancestor).\n\t * Changing the progress will alter the vertical position of the minimap (and its position tracker) and give the user an accurate\n\t * overview of the visible document.\n\t *\n\t * **Note**: The value should be between 0 and 1. 0 when the DOM root has not been scrolled, 1 when the\n\t * scrolling has reached the end.\n\t *\n\t * @param {Number} newScrollProgress\n\t */\n\tsetScrollProgress( newScrollProgress ) {\n\t\tconst iframeView = this._minimapIframeView;\n\t\tconst positionTrackerView = this._positionTrackerView;\n\n\t\t// The scrolling should end when the bottom edge of the iframe touches the bottom edge of the minimap.\n\t\tif ( iframeView.height < this.height ) {\n\t\t\tiframeView.setTopOffset( 0 );\n\t\t\tpositionTrackerView.setTopOffset( ( iframeView.height - positionTrackerView.height ) * newScrollProgress );\n\t\t} else {\n\t\t\tconst totalOffset = iframeView.height - this.height;\n\n\t\t\tiframeView.setTopOffset( -totalOffset * newScrollProgress );\n\t\t\tpositionTrackerView.setTopOffset( ( this.height - positionTrackerView.height ) * newScrollProgress );\n\t\t}\n\n\t\tpositionTrackerView.setScrollProgress( Math.round( newScrollProgress * 100 ) );\n\t}\n\n\t/**\n\t * Sets the new height of the tracker (in px) to visualize the subset of the content visible to the user.\n\t *\n\t * @param {Number} trackerHeight\n\t */\n\tsetPositionTrackerHeight( trackerHeight ) {\n\t\tthis._positionTrackerView.setHeight( trackerHeight * this._scaleRatio );\n\t}\n\n\t/**\n\t * @private\n\t * @param {Event} data DOM event data\n\t */\n\t_handleMinimapClick( data ) {\n\t\tconst positionTrackerView = this._positionTrackerView;\n\n\t\tif ( data.target === positionTrackerView.element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst trackerViewRect = new Rect( positionTrackerView.element );\n\t\tconst diff = data.clientY - trackerViewRect.top - trackerViewRect.height / 2;\n\t\tconst percentage = diff / this._minimapIframeView.height;\n\n\t\tthis.fire( 'click', percentage );\n\t}\n\n\t/**\n\t * @private\n\t * @param {Event} data DOM event data\n\t */\n\t_handleMinimapMouseWheel( data ) {\n\t\tthis.fire( 'drag', data.deltaY * this._scaleRatio );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* global CSSMediaRule */\n\n/**\n * @module minimap/utils\n */\n\nimport { Rect, global } from 'ckeditor5/src/utils';\nimport { DomConverter, Renderer } from 'ckeditor5/src/engine';\n\n/**\n * Clones the editing view DOM root by using a dedicated pair of {@link module:engine/view/renderer~Renderer} and\n * {@link module:engine/view/domconverter~DomConverter}. The DOM root clone updates incrementally to stay in sync with the\n * source root.\n *\n * @protected\n * @param {module:core/editor/editor~Editor} editor The editor instance the original editing root belongs to.\n * @param {String} rootName The name of the root to clone.\n * @returns {HTMLElement} The editing root DOM clone element.\n */\nexport function cloneEditingViewDomRoot( editor, rootName ) {\n\tconst viewDocument = editor.editing.view.document;\n\tconst viewRoot = viewDocument.getRoot( rootName );\n\tconst domConverter = new DomConverter( viewDocument );\n\tconst renderer = new Renderer( domConverter, viewDocument.selection );\n\tconst domRootClone = editor.editing.view.getDomRoot().cloneNode();\n\n\tdomConverter.bindElements( domRootClone, viewRoot );\n\n\trenderer.markToSync( 'children', viewRoot );\n\trenderer.markToSync( 'attributes', viewRoot );\n\n\tviewRoot.on( 'change:children', ( evt, node ) => renderer.markToSync( 'children', node ) );\n\tviewRoot.on( 'change:attributes', ( evt, node ) => renderer.markToSync( 'attributes', node ) );\n\tviewRoot.on( 'change:text', ( evt, node ) => renderer.markToSync( 'text', node ) );\n\n\trenderer.render();\n\n\teditor.editing.view.on( 'render', () => renderer.render() );\n\n\t// TODO: Cleanup after destruction.\n\teditor.on( 'destroy', () => {\n\t\tdomConverter.unbindDomElement( domRootClone );\n\t} );\n\n\treturn domRootClone;\n}\n\n/**\n * Harvests all web page styles, for instance, to allow re-using them in an `<iframe>` preserving the look of the content.\n *\n * The returned data format is as follows:\n *\n *\t\t[\n *\t\t\t'p { color: red; ... } h2 { font-size: 2em; ... } ...',\n *\t\t\t'.spacing { padding: 1em; ... }; ...',\n *\t\t\t'...',\n *\t\t\t{ href: 'http://link.to.external.stylesheet' },\n *\t\t\t{ href: '...' }\n *\t\t]\n *\n * **Note**: For stylesheets with `href` different than window origin, an object is returned because\n * accessing rules of these styles may cause CORS errors (depending on the configuration of the web page).\n *\n * @protected\n * @returns {Array.<String|Object>}\n */\nexport function getPageStyles() {\n\treturn Array.from( global.document.styleSheets )\n\t\t.map( styleSheet => {\n\t\t\t// CORS\n\t\t\tif ( styleSheet.href && !styleSheet.href.startsWith( global.window.location.origin ) ) {\n\t\t\t\treturn { href: styleSheet.href };\n\t\t\t}\n\n\t\t\treturn Array.from( styleSheet.cssRules )\n\t\t\t\t.filter( rule => !( rule instanceof CSSMediaRule ) )\n\t\t\t\t.map( rule => rule.cssText )\n\t\t\t\t.join( ' \\n' );\n\t\t} );\n}\n\n/**\n * TODO\n *\n * @protected\n * @returns {module:utils/dom/rect~Rect}\n */\nexport function getDomElementRect( domElement ) {\n\treturn new Rect( domElement === global.document.body ? global.window : domElement );\n}\n\n/**\n * TODO\n *\n * @protected\n * @returns {Number}\n */\nexport function getClientHeight( domElement ) {\n\treturn domElement === global.document.body ? global.window.innerHeight : domElement.clientHeight;\n}\n\n/**\n * TODO\n *\n * @protected\n * @returns {HTMLElement}\n */\nexport function getScrollable( domElement ) {\n\treturn domElement === global.document.body ? global.window : domElement;\n}\n\n/**\n * Returns the closest scrollable ancestor of a DOM element.\n *\n * TODO: Move to shared utils.\n *\n * @protected\n * @param {HTMLElement} domElement\n * @returns {HTMLElement|null}\n */\nexport function findClosestScrollableAncestor( domElement ) {\n\tdo {\n\t\tdomElement = domElement.parentElement;\n\n\t\tif ( !domElement ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst overflow = global.window.getComputedStyle( domElement ).overflowY;\n\n\t\tif ( overflow === 'auto' || overflow === 'scroll' ) {\n\t\t\tbreak;\n\t\t}\n\t} while ( domElement.tagName != 'BODY' );\n\n\treturn domElement;\n}\n","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/core.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/engine.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/ui.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/utils.js\");","module.exports = CKEditor5.dll;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module minimap\n */\n\nexport { default as Minimap } from './minimap';\n"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckeditor/ckeditor5-minimap",
|
|
3
|
-
"version": "35.1
|
|
3
|
+
"version": "35.2.1",
|
|
4
4
|
"description": "Content minimap feature for CKEditor 5.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ckeditor",
|
|
@@ -12,23 +12,23 @@
|
|
|
12
12
|
],
|
|
13
13
|
"main": "src/index.js",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"ckeditor5": "^35.1
|
|
15
|
+
"ckeditor5": "^35.2.1"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@ckeditor/ckeditor5-alignment": "^35.1
|
|
19
|
-
"@ckeditor/ckeditor5-basic-styles": "^35.1
|
|
20
|
-
"@ckeditor/ckeditor5-cloud-services": "^35.1
|
|
21
|
-
"@ckeditor/ckeditor5-code-block": "^35.1
|
|
22
|
-
"@ckeditor/ckeditor5-core": "^35.1
|
|
23
|
-
"@ckeditor/ckeditor5-dev-utils": "^
|
|
24
|
-
"@ckeditor/ckeditor5-easy-image": "^35.1
|
|
25
|
-
"@ckeditor/ckeditor5-editor-decoupled": "^35.1
|
|
26
|
-
"@ckeditor/ckeditor5-font": "^35.1
|
|
27
|
-
"@ckeditor/ckeditor5-image": "^35.1
|
|
28
|
-
"@ckeditor/ckeditor5-indent": "^35.1
|
|
29
|
-
"@ckeditor/ckeditor5-page-break": "^35.1
|
|
30
|
-
"@ckeditor/ckeditor5-table": "^35.1
|
|
31
|
-
"@ckeditor/ckeditor5-theme-lark": "^35.1
|
|
18
|
+
"@ckeditor/ckeditor5-alignment": "^35.2.1",
|
|
19
|
+
"@ckeditor/ckeditor5-basic-styles": "^35.2.1",
|
|
20
|
+
"@ckeditor/ckeditor5-cloud-services": "^35.2.1",
|
|
21
|
+
"@ckeditor/ckeditor5-code-block": "^35.2.1",
|
|
22
|
+
"@ckeditor/ckeditor5-core": "^35.2.1",
|
|
23
|
+
"@ckeditor/ckeditor5-dev-utils": "^31.0.0",
|
|
24
|
+
"@ckeditor/ckeditor5-easy-image": "^35.2.1",
|
|
25
|
+
"@ckeditor/ckeditor5-editor-decoupled": "^35.2.1",
|
|
26
|
+
"@ckeditor/ckeditor5-font": "^35.2.1",
|
|
27
|
+
"@ckeditor/ckeditor5-image": "^35.2.1",
|
|
28
|
+
"@ckeditor/ckeditor5-indent": "^35.2.1",
|
|
29
|
+
"@ckeditor/ckeditor5-page-break": "^35.2.1",
|
|
30
|
+
"@ckeditor/ckeditor5-table": "^35.2.1",
|
|
31
|
+
"@ckeditor/ckeditor5-theme-lark": "^35.2.1",
|
|
32
32
|
"webpack": "^5.58.1",
|
|
33
33
|
"webpack-cli": "^4.9.0"
|
|
34
34
|
},
|