import extend from"extend";import Emitter from"../core/emitter";import BaseTheme,{BaseTooltip}from"./base";import LinkBlot from"../formats/link";import Picker from"../ui/picker";import{Range}from"../core/selection";const TOOLBAR_CONFIG=[[{header:["1","2","3",!1]}],["bold","italic","underline","link"],[{list:"ordered"},{list:"bullet"}],["clean"]];class SnowTheme extends BaseTheme{constructor(e,t){null!=t.modules.toolbar&&null==t.modules.toolbar.container&&(t.modules.toolbar.container=TOOLBAR_CONFIG),super(e,t),this.quill.container.classList.add("ql-snow")}extendToolbar(e){e.container.classList.add("ql-snow"),this.buildButtons([].slice.call(e.container.querySelectorAll("button"))),this.buildPickers([].slice.call(e.container.querySelectorAll("select"))),this.tooltip=new SnowTooltip(this.quill,this.options.bounds),e.container.querySelector(".ql-link")&&this.quill.keyboard.addBinding({key:"K",shortKey:!0},(function(t,i){e.handlers.link.call(e,!i.format.link)}))}}SnowTheme.DEFAULTS=extend(!0,{},BaseTheme.DEFAULTS,{modules:{toolbar:{handlers:{link:function(e){if(e){let e=this.quill.getSelection();if(null==e||0==e.length)return;let t=this.quill.getText(e);/^\S+@\S+\.\S+$/.test(t)&&0!==t.indexOf("mailto:")&&(t="mailto:"+t),this.quill.theme.tooltip.edit("link",t)}else this.quill.format("link",!1)}}}}});class SnowTooltip extends BaseTooltip{constructor(e,t){super(e,t),this.preview=this.root.querySelector("a.ql-preview")}listen(){super.listen(),this.root.querySelector("a.ql-action").addEventListener("click",(e=>{this.root.classList.contains("ql-editing")?this.save():this.edit("link",this.preview.textContent),e.preventDefault()})),this.root.querySelector("a.ql-remove").addEventListener("click",(e=>{null!=this.linkRange&&(this.restoreFocus(),this.quill.formatText(this.linkRange,"link",!1,Emitter.sources.USER),delete this.linkRange),e.preventDefault(),this.hide()})),this.quill.on(Emitter.events.SELECTION_CHANGE,(e=>{if(null!=e){if(0===e.length){let[t,i]=this.quill.scroll.descendant(LinkBlot,e.index);if(null!=t){this.linkRange=new Range(e.index-i,t.length());let l=LinkBlot.formats(t.domNode);return this.preview.textContent=l,this.preview.setAttribute("href",l),this.show(),void this.position(this.quill.getBounds(this.linkRange))}}this.hide()}}))}show(){super.show(),this.root.removeAttribute("data-mode")}}SnowTooltip.TEMPLATE=['<a class="ql-preview" target="_blank" href="about:blank"></a>','<input type="text" data-formula="e=mc^2" data-link="quilljs.com" data-video="Embed URL">','<a class="ql-action"></a>','<a class="ql-remove"></a>'].join("");export default SnowTheme;