diff --git a/dev.js b/dev.js index 283754a..b7a92fd 100644 --- a/dev.js +++ b/dev.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("quill")):"function"==typeof define&&define.amd?define(["exports","quill"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bundle={},t.Quill)}(this,(function(t,e){"use strict";function o(t,e){let o,i=!1;return()=>{o&&clearTimeout(o),i?o=setTimeout(t,e):(t(),i=!0,setTimeout((()=>i=!1),e))}}const i=t=>"function"==typeof t,s=t=>"string"==typeof t,n=e.import("formats/header");class r extends n{static create(t){const e=super.create(t);return e.id=Math.random().toString(36).slice(2,8),e}}class l{quill;static moduleName="header-list";static toolName="header-list";static toolbarHandle=async function(){const t=this.quill.getModule(l.moduleName);t&&t.toggleDisplay()};static register(){e.import("ui/icons")[l.toolName]='',e.register({"formats/header":r},!0)}scrollContainerListener=o(this.handleScroll.bind(this),100);editorHeaders=[];isHidden=!1;bem=((t,e="hl")=>{const o=e?`${e}-`:"";return{b:()=>`${o}${t}`,be:e=>e?`${o}${t}__${e}`:"",bm:e=>e?`${o}${t}--${e}`:"",bem:(e,i)=>e&&i?`${o}${t}__${e}--${i}`:"",ns:t=>t?`${o}${t}`:"",bs:e=>e?`${o}${t}-${e}`:"",cv:t=>t?`--${o}${t}`:"",is:t=>`is-${t}`}})("header-list");root;options;highlightedItem;#t=0;constructor(t,i){this.quill=t,this.options=this.resolveOptions({...i}),this.options.container?(this.hide(),this.root=this.buildList(),this.options.container.appendChild(this.root),this.quill.on(e.events.TEXT_CHANGE,o((()=>this.updateHeaders()),500)),this.quill.on(e.events.EDITOR_CHANGE,(()=>{const[t]=this.quill.selection.getRange();null===t&&this.activeToolbarControl()}))):console.warn("header-list: options.container is required")}resolveOptions(t){const e=s(t.container)?document.getElementById(t.container):t.container;let o,n=t.scrollContainer?s(t.scrollContainer)?document.getElementById(t.scrollContainer):t.scrollContainer:this.quill.root;n!==window&&n!==document.documentElement||(n=void 0);const r=t.topOffset;return i(r)?o=r:o="number"==typeof r?()=>r:()=>0,Object.assign({hideClass:this.bem.is("hidden"),headerHeight:36,onBeforeShow:()=>!1,onBeforeHide:()=>!1,onItemClick:()=>{},container:e},{...t},{scrollContainer:n,topOffset:async()=>{let t=await o();return t=Number.isNaN(Number(t))?0:t,this.#t!==t&&(this.#t=t),t}})}updateHeaders(){const t=Array.from(this.quill.root.querySelectorAll(":scope > h1, :scope > h2, :scope > h3, :scope > h4, :scope > h5, :scope > h6")),e=this.editorHeaders.map((t=>t.el)).filter((e=>!t.includes(e))),o=[],i=[];for(const[e,s]of t.entries())this.editorHeaders.some((t=>t.el===s))?this.editorHeaders.some((({el:t,text:e})=>t===s&&e!==s.textContent))&&i.push(s):o.push({el:s,index:e});this.update(o,e,i),this.editorHeaders=t.map((t=>({el:t,text:t.textContent||""})))}bindScrollListener(){let t=window;this.options.scrollContainer&&(t=this.options.scrollContainer),t.addEventListener("scroll",this.scrollContainerListener)}removeScrollListener(){let t=window;this.options.scrollContainer&&(t=this.options.scrollContainer),t.removeEventListener("scroll",this.scrollContainerListener)}async handleScroll(){if(!this.root)return;let t=this.editorHeaders[0]?.el||null;const e=this.options.scrollContainer||document.documentElement,o=await this.options.topOffset(),i=e.scrollTop,s=this.options.scrollContainer?.offsetParent||document.body,n=this.editorHeaders.map((({el:t})=>({el:t,top:a(t,s)}))).filter((({top:t})=>!Number.isNaN(t))).sort(((t,e)=>t.top-e.top));for(const{el:e,top:s}of n){if(s>i+o+this.options.headerHeight)break;t=e}t&&this.setHighlight(t.id)}buildList(){const t=document.createElement("div");return t.classList.add(this.bem.b()),t}createListItem(t,e,o){const i=document.createElement("div");return i.classList.add(this.bem.be("item"),`level-${o}`),i.dataset.id=t,i.textContent=e,i}async hide(){await this.options.onBeforeHide()||(this.options.container.classList.add(this.options.hideClass),this.isHidden=!0,this.activeToolbarControl(),this.removeScrollListener())}async show(){await this.options.onBeforeShow()||(this.options.container.classList.remove(this.options.hideClass),this.isHidden=!1,this.activeToolbarControl(),this.handleScroll(),this.bindScrollListener())}activeToolbarControl(){const t=this.quill.getModule("toolbar");if(!t)return;const e=t.controls.find((([t])=>t===l.toolName));e&&(this.isHidden?e[1].classList.remove("ql-active"):e[1].classList.add("ql-active"))}toggleDisplay(){return this.isHidden?this.show():this.hide()}update(t,e,o){if(this.root){for(const t of e){const e=this.root.querySelector(`[data-id="${t.id}"]`);e&&e.remove()}for(const{index:e,el:o}of t)this.root.insertBefore(this.createListItem(o.id,o.textContent||"",Number(o.tagName.slice(1))),this.root.children[e]);this.root.addEventListener("click",(async t=>{const e=t.target;if(!e||!e.classList.contains(this.bem.be("item")))return;const o=e.dataset.id;if(!o)return;const s=["h1","h2","h3","h4","h5","h6"].map((t=>`:scope > ${t}[id="${o}"]`)).join(", "),n=this.quill.root.querySelector(s);if(n){const t=this.options.scrollContainer||document.documentElement;let e=0;if(t===document.documentElement){e=this.quill.root.getBoundingClientRect().top+window.scrollY}const o=await this.options.topOffset(),i=e+n.offsetTop-o;t.scrollTo({top:i})}i(this.options.onItemClick)&&this.options.onItemClick(o)}));for(const t of o){const e=this.root.querySelector(`[data-id="${t.id}"]`);e&&(e.textContent=t.textContent)}}}setHighlight(t){if(!this.root)return;const e=this.root.querySelector(`:scope > [data-id="${t}"]`);e&&(this.highlightedItem&&this.highlightedItem.classList.remove(this.bem.is("highlight")),e.classList.add(this.bem.is("highlight")),this.highlightedItem=e)}}function a(t,e=document.body){let o=0;for(;t!==e;){if(null===t)return Number.NaN;o+=t.offsetTop,t=t.offsetParent}return o}t.HeaderList=l,t.HeaderWithID=r,t.default=l,Object.defineProperty(t,"__esModule",{value:!0})})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("quill")):"function"==typeof define&&define.amd?define(["exports","quill"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bundle={},t.Quill)}(this,(function(t,e){"use strict";function o(t,e){let o,i=!1;return()=>{o&&clearTimeout(o),i?o=setTimeout(t,e):(t(),i=!0,setTimeout((()=>i=!1),e))}}const i=()=>Math.random().toString(36).slice(2,8),s=t=>"function"==typeof t,n=t=>"string"==typeof t;const r=e.import("formats/header");class l{quill;static moduleName="header-list";static toolName="header-list";static toolbarHandle=async function(){const t=this.quill.getModule(l.moduleName);t&&t.toggleDisplay()};static register(){e.import("ui/icons")[l.toolName]='';const t=function(t){return class extends t{static create(t){const e=super.create(t);return e.id=i(),e}}}(e.import("formats/header"));e.register({"formats/header":t},!0)}scrollContainerListener=o(this.handleScroll.bind(this),100);editorHeaders=[];isHidden=!1;bem=((t,e="hl")=>{const o=e?`${e}-`:"";return{b:()=>`${o}${t}`,be:e=>e?`${o}${t}__${e}`:"",bm:e=>e?`${o}${t}--${e}`:"",bem:(e,i)=>e&&i?`${o}${t}__${e}--${i}`:"",ns:t=>t?`${o}${t}`:"",bs:e=>e?`${o}${t}-${e}`:"",cv:t=>t?`--${o}${t}`:"",is:t=>`is-${t}`}})("header-list");root;options;highlightedItem;#t=0;constructor(t,i){this.quill=t,this.options=this.resolveOptions({...i}),this.options.container?(this.hide(),this.root=this.buildList(),this.options.container.appendChild(this.root),this.quill.on(e.events.TEXT_CHANGE,o((()=>this.updateHeaders()),500)),this.quill.on(e.events.EDITOR_CHANGE,(()=>{const[t]=this.quill.selection.getRange();null===t&&this.activeToolbarControl()}))):console.warn("header-list: options.container is required")}resolveOptions(t){const e=n(t.container)?document.getElementById(t.container):t.container;let o,i=t.scrollContainer?n(t.scrollContainer)?document.getElementById(t.scrollContainer):t.scrollContainer:this.quill.root;i!==window&&i!==document.documentElement||(i=void 0);const r=t.topOffset;return s(r)?o=r:o="number"==typeof r?()=>r:()=>0,Object.assign({hideClass:this.bem.is("hidden"),headerHeight:36,onBeforeShow:()=>!1,onBeforeHide:()=>!1,onItemClick:()=>{},container:e},{...t},{scrollContainer:i,topOffset:async()=>{let t=await o();return t=Number.isNaN(Number(t))?0:t,this.#t!==t&&(this.#t=t),t}})}updateHeaders(){const t=Array.from(this.quill.root.querySelectorAll(":scope > h1, :scope > h2, :scope > h3, :scope > h4, :scope > h5, :scope > h6")),e=this.editorHeaders.map((t=>t.el)).filter((e=>!t.includes(e))),o=[],i=[];for(const[e,s]of t.entries())this.editorHeaders.some((t=>t.el===s))?this.editorHeaders.some((({el:t,text:e})=>t===s&&e!==s.textContent))&&i.push(s):o.push({el:s,index:e});this.update(o,e,i),this.editorHeaders=t.map((t=>({el:t,text:t.textContent||""})))}bindScrollListener(){let t=window;this.options.scrollContainer&&(t=this.options.scrollContainer),t.addEventListener("scroll",this.scrollContainerListener)}removeScrollListener(){let t=window;this.options.scrollContainer&&(t=this.options.scrollContainer),t.removeEventListener("scroll",this.scrollContainerListener)}async handleScroll(){if(!this.root)return;let t=this.editorHeaders[0]?.el||null;const e=this.options.scrollContainer||document.documentElement,o=await this.options.topOffset(),i=e.scrollTop,s=this.options.scrollContainer?.offsetParent||document.body,n=this.editorHeaders.map((({el:t})=>({el:t,top:a(t,s)}))).filter((({top:t})=>!Number.isNaN(t))).sort(((t,e)=>t.top-e.top));for(const{el:e,top:s}of n){if(s>i+o+this.options.headerHeight)break;t=e}t&&this.setHighlight(t.id)}buildList(){const t=document.createElement("div");return t.classList.add(this.bem.b()),t}createListItem(t,e,o){const i=document.createElement("div");return i.classList.add(this.bem.be("item"),`level-${o}`),i.dataset.id=t,i.textContent=e,i}async hide(){await this.options.onBeforeHide()||(this.options.container.classList.add(this.options.hideClass),this.isHidden=!0,this.activeToolbarControl(),this.removeScrollListener())}async show(){await this.options.onBeforeShow()||(this.options.container.classList.remove(this.options.hideClass),this.isHidden=!1,this.activeToolbarControl(),this.handleScroll(),this.bindScrollListener())}activeToolbarControl(){const t=this.quill.getModule("toolbar");if(!t)return;const e=t.controls.find((([t])=>t===l.toolName));e&&(this.isHidden?e[1].classList.remove("ql-active"):e[1].classList.add("ql-active"))}toggleDisplay(){return this.isHidden?this.show():this.hide()}update(t,e,o){if(this.root){for(const t of e){const e=this.root.querySelector(`[data-id="${t.id}"]`);e&&e.remove()}for(const{index:e,el:o}of t)this.root.insertBefore(this.createListItem(o.id,o.textContent||"",Number(o.tagName.slice(1))),this.root.children[e]);this.root.addEventListener("click",(async t=>{const e=t.target;if(!e||!e.classList.contains(this.bem.be("item")))return;const o=e.dataset.id;if(!o)return;const i=["h1","h2","h3","h4","h5","h6"].map((t=>`:scope > ${t}[id="${o}"]`)).join(", "),n=this.quill.root.querySelector(i);if(n){const t=this.options.scrollContainer||document.documentElement;let e=0;if(t===document.documentElement){e=this.quill.root.getBoundingClientRect().top+window.scrollY}const o=await this.options.topOffset(),i=e+n.offsetTop-o;t.scrollTo({top:i})}s(this.options.onItemClick)&&this.options.onItemClick(o)}));for(const t of o){const e=this.root.querySelector(`[data-id="${t.id}"]`);e&&(e.textContent=t.textContent)}}}setHighlight(t){if(!this.root)return;const e=this.root.querySelector(`:scope > [data-id="${t}"]`);e&&(this.highlightedItem&&this.highlightedItem.classList.remove(this.bem.is("highlight")),e.classList.add(this.bem.is("highlight")),this.highlightedItem=e)}}function a(t,e=document.body){let o=0;for(;t!==e;){if(null===t)return Number.NaN;o+=t.offsetTop,t=t.offsetParent}return o}t.HeaderList=l,t.HeaderWithID=class extends r{static create(t){const e=super.create(t);return e.id=i(),e}},t.default=l,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=dev.js.map diff --git a/dev.js.map b/dev.js.map index e25071c..b27fc97 100644 --- a/dev.js.map +++ b/dev.js.map @@ -1 +1 @@ -{"version":3,"file":"dev.js","sources":["../src/utils/functions.ts","../src/utils/id.ts","../src/utils/is.ts","../src/formats/header.ts","../src/index.ts","../src/utils/bem.ts","../src/utils/constants.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["throttleAndDebounce","fn","delay","timeoutId","called","clearTimeout","setTimeout","isFunction","val","isString","Header","Quill","import","HeaderWithID","create","value","node","super","id","Math","random","toString","slice","HeaderList","quill","static","async","headerListModule","this","getModule","moduleName","toggleDisplay","register","toolName","scrollContainerListener","handleScroll","bind","editorHeaders","isHidden","bem","b","n","prefix","be","e","bm","m","ns","s","bs","cv","v","is","createBEM","root","options","highlightedItem","lastTopOffset","constructor","resolveOptions","container","hide","buildList","appendChild","on","events","TEXT_CHANGE","updateHeaders","EDITOR_CHANGE","range","selection","getRange","activeToolbarControl","console","warn","document","getElementById","resultTopOffset","scrollContainer","window","documentElement","undefined","inputTopOffset","topOffset","Object","assign","hideClass","headerHeight","onBeforeShow","onBeforeHide","onItemClick","offset","Number","isNaN","currentHeaders","Array","from","querySelectorAll","removedHeaders","map","item","el","filter","header","includes","newHeaders","modifiedHeaders","index","entries","some","text","textContent","push","update","bindScrollListener","addEventListener","removeScrollListener","removeEventListener","scrollTop","offsetParent","body","headers","top","getAbsoluteTop","sort","a","setHighlight","createElement","classList","add","createListItem","level","dataset","show","remove","toolbarModule","control","controls","find","addHeaders","removeHeaders","querySelector","insertBefore","tagName","children","target","contains","selector","tag","join","targetHeader","containerOffsetTop","getBoundingClientRect","scrollY","offsetPosition","offsetTop","scrollTo","listItem","element","NaN"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"dev.js","sources":["../src/utils/functions.ts","../src/utils/id.ts","../src/utils/is.ts","../src/formats/header.ts","../src/index.ts","../src/header.ts","../src/utils/bem.ts","../src/utils/constants.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["throttleAndDebounce","fn","delay","timeoutId","called","clearTimeout","setTimeout","randomID","Math","random","toString","slice","isFunction","val","isString","Header","Quill","import","HeaderList","quill","static","async","headerListModule","this","getModule","moduleName","toggleDisplay","register","toolName","HeaderWithID","create","value","node","super","id","generateHeaderWithId","scrollContainerListener","handleScroll","bind","editorHeaders","isHidden","bem","b","n","prefix","be","e","bm","m","ns","s","bs","cv","v","is","createBEM","root","options","highlightedItem","lastTopOffset","constructor","resolveOptions","container","hide","buildList","appendChild","on","events","TEXT_CHANGE","updateHeaders","EDITOR_CHANGE","range","selection","getRange","activeToolbarControl","console","warn","document","getElementById","resultTopOffset","scrollContainer","window","documentElement","undefined","inputTopOffset","topOffset","Object","assign","hideClass","headerHeight","onBeforeShow","onBeforeHide","onItemClick","offset","Number","isNaN","currentHeaders","Array","from","querySelectorAll","removedHeaders","map","item","el","filter","header","includes","newHeaders","modifiedHeaders","index","entries","some","text","textContent","push","update","bindScrollListener","addEventListener","removeScrollListener","removeEventListener","scrollTop","offsetParent","body","headers","top","getAbsoluteTop","sort","a","setHighlight","createElement","classList","add","createListItem","level","dataset","show","remove","toolbarModule","control","controls","find","addHeaders","removeHeaders","querySelector","insertBefore","tagName","children","target","contains","selector","tag","join","targetHeader","containerOffsetTop","getBoundingClientRect","scrollY","offsetPosition","offsetTop","scrollTo","listItem","element","NaN"],"mappings":"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"} \ No newline at end of file