diff --git a/scriptmanager/src/app/script/script-slide/script-slide.component.html b/scriptmanager/src/app/script/script-slide/script-slide.component.html index 4d21994..4b00c78 100644 --- a/scriptmanager/src/app/script/script-slide/script-slide.component.html +++ b/scriptmanager/src/app/script/script-slide/script-slide.component.html @@ -25,9 +25,10 @@
Visual Cue
Word Count : {{ visual_cue }}
Word Count : {{ narration }}
{{ visual_cue }}
{{ narration }}
").replace(/\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g," ")).indexOf("
")>-1&&(t=`
${t}
`),t}(r.getData("text/plain"))),i=this._htmlDataProcessor.toView(i),this.fire("inputTransformation",{content:i,dataTransfer:r}),n.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(t,e)=>{if(!e.content.isEmpty){const t=this.editor.model,n=this.editor.data.toModel(e.content,"$clipboardHolder");if(0==n.childCount)return;t.insertContent(n)}},{priority:"low"}),this.listenTo(r,"copy",i,{priority:"low"}),this.listenTo(r,"cut",(e,n)=>{t.isReadOnly?n.preventDefault():i(e,n)},{priority:"low"}),this.listenTo(r,"clipboardOutput",(n,r)=>{r.content.isEmpty||(r.dataTransfer.setData("text/html",this._htmlDataProcessor.toData(r.content)),r.dataTransfer.setData("text/plain",function t(e){let n="";if(e.is("text")||e.is("textProxy"))n=e.data;else if(e.is("img")&&e.hasAttribute("alt"))n=e.getAttribute("alt");else{let r=null;for(const i of e.getChildren()){const e=t(i);r&&(r.is("containerElement")||i.is("containerElement"))&&(Ea.includes(r.name)||Ea.includes(i.name)?n+="\n":n+="\n\n"),n+=e,r=i}}return n}(r.content))),"cut"==r.method&&t.model.deleteContent(e.selection)},{priority:"low"})}}class Pa{constructor(t){this.editor=t,this.set("value",void 0),this.set("isEnabled",!1),this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",()=>{this.refresh()}),this.on("execute",t=>{this.isEnabled||t.stop()},{priority:"high"}),this.listenTo(t,"change:isReadOnly",(t,e,n)=>{n?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})}refresh(){this.isEnabled=!0}forceDisabled(t){this._disableStack.add(t),1==this._disableStack.size&&(this.on("set:isEnabled",Ta,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(t){this._disableStack.delete(t),0==this._disableStack.size&&(this.off("set:isEnabled",Ta),this.refresh())}execute(){}destroy(){this.stopListening()}}function Ta(t){t.return=!1,t.stop()}Se(Pa,Qe);class Na extends Pa{execute(){const t=this.editor.model,e=t.document;t.change(n=>{!function(t,e,n,r){const i=n.isCollapsed,o=n.getFirstRange(),s=o.start.parent,a=o.end.parent;if(r.isLimit(s)||r.isLimit(a))i||s!=a||t.deleteContent(n);else if(i)Ia(e,o.start);else{const r=!(o.start.isAtStart&&o.end.isAtEnd),i=s==a;t.deleteContent(n,{leaveUnmerged:r}),r&&(i?Ia(e,n.focus):e.setSelection(a,0))}}(this.editor.model,n,e.selection,t.schema),this.fire("afterExecute",{writer:n})})}}function Ia(t,e){t.split(e),t.setSelection(e.parent.nextSibling,0)}class Ma extends _r{constructor(t){super(t);const e=this.document;e.on("keydown",(t,n)=>{if(this.isEnabled&&n.keyCode==En.enter){let r;e.once("enter",t=>r=t,{priority:"highest"}),e.fire("enter",new Br(e,n.domEvent,{isSoft:n.shiftKey})),r&&r.stop.called&&t.stop()}})}observe(){}}class Da extends Ca{static get pluginName(){return"Enter"}init(){const t=this.editor,e=t.editing.view,n=e.document;e.addObserver(Ma),t.commands.add("enter",new Na(t)),this.listenTo(n,"enter",(n,r)=>{r.preventDefault(),r.isSoft||(t.execute("enter"),e.scrollToTheSelection())},{priority:"low"})}}class ja extends Pa{execute(){const t=this.editor.model,e=t.document;t.change(n=>{!function(t,e,n){const r=n.isCollapsed,i=n.getFirstRange(),o=i.end.parent,s=i.start.parent==o;if(r)La(e,i.end);else{const r=!(i.start.isAtStart&&i.end.isAtEnd);t.deleteContent(n,{leaveUnmerged:r}),s?La(e,n.focus):r&&e.setSelection(o,0)}}(t,n,e.selection),this.fire("afterExecute",{writer:n})})}refresh(){const t=this.editor.model;this.isEnabled=function(t,e){if(e.rangeCount>1)return!1;const n=e.anchor;if(!n||!t.checkChild(n,"softBreak"))return!1;const r=e.getFirstRange(),i=r.start.parent,o=r.end.parent;return!Ra(i,t)&&!Ra(o,t)||i===o}(t.schema,t.document.selection)}}function La(t,e){const n=t.createElement("softBreak");t.insert(n,e),t.setSelection(n,"after")}function Ra(t,e){return!t.is("rootElement")&&(e.isLimit(t)||Ra(t.parent,e))}class Fa extends Ca{static get pluginName(){return"ShiftEnter"}init(){const t=this.editor,e=t.conversion,n=t.editing.view,r=n.document;t.model.schema.register("softBreak",{allowWhere:"$text",isInline:!0}),e.for("upcast").elementToElement({model:"softBreak",view:"br"}),e.for("downcast").elementToElement({model:"softBreak",view:(t,e)=>e.createEmptyElement("br")}),n.addObserver(Ma),t.commands.add("shiftEnter",new ja(t)),this.listenTo(r,"enter",(e,r)=>{r.preventDefault(),r.isSoft&&(t.execute("shiftEnter"),n.scrollToTheSelection())},{priority:"low"})}}class Ba{constructor(t,e=20){this.model=t,this.size=0,this.limit=e,this.isLocked=!1,this._changeCallback=((t,e)=>{"transparent"!=e.type&&e!==this._batch&&this._reset(!0)}),this._selectionChangeCallback=(()=>{this._reset()}),this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch()),this._batch}input(t){this.size+=t,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(t){this.isLocked&&!t||(this._batch=null,this.size=0)}}class Va extends Pa{constructor(t,e){super(t),this._buffer=new Ba(t.model,e)}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(t={}){const e=this.editor.model,n=e.document,r=t.text||"",i=r.length,o=t.range||n.selection.getFirstRange(),s=t.resultRange;e.enqueueChange(this._buffer.batch,t=>{const a=o.isCollapsed;this._buffer.lock(),e.deleteContent(e.createSelection(o)),r&&e.insertContent(t.createText(r,n.selection.getAttributes()),o.start),s?t.setSelection(s):a&&t.setSelection(o.start.getShiftedBy(i)),this._buffer.unlock(),this._buffer.input(i)})}}const qa=[On("arrowUp"),On("arrowRight"),On("arrowDown"),On("arrowLeft"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255];for(let kp=112;kp<=135;kp++)qa.push(kp);function za(t){if(0==t.length)return!1;for(const e of t)if("children"===e.type&&!Ua(e))return!0;return!1}function Ua(t){if(t.newChildren.length-t.oldChildren.length!=1)return;const e=function(t,e){const n=[];let r,i=0;return t.forEach(t=>{"equal"==t?(o(),i++):"insert"==t?(s("insert")?r.values.push(e[i]):(o(),r={type:"insert",index:i,values:[e[i]]}),i++):s("delete")?r.howMany++:(o(),r={type:"delete",index:i,howMany:1})}),o(),n;function o(){r&&(n.push(r),r=null)}function s(t){return r&&r.type==t}}(ir(t.oldChildren,t.newChildren,Ha),t.newChildren);if(e.length>1)return;const n=e[0];return n.values[0]&&n.values[0].is("text")?n:void 0}function Ha(t,e){return t&&t.is("text")&&e&&e.is("text")?t.data===e.data:t===e}class Wa{constructor(t){this.editor=t,this.editing=this.editor.editing}handle(t,e){if(za(t))this._handleContainerChildrenMutations(t,e);else for(const n of t)this._handleTextMutation(n,e),this._handleTextNodeInsertion(n)}_handleContainerChildrenMutations(t,e){const n=function(t){const e=t.map(t=>t.node).reduce((t,e)=>t.getCommonAncestor(e,{includeSelf:!0}));if(e)return e.getAncestors({includeSelf:!0,parentFirst:!0}).find(t=>t.is("containerElement")||t.is("rootElement"))}(t);if(!n)return;const r=this.editor.editing.view.domConverter.mapViewToDom(n),i=new pr,o=this.editor.data.toModel(i.domToView(r)).getChild(0),s=this.editor.editing.mapper.toModelElement(n);if(!s)return;const a=Array.from(o.getChildren()),l=Array.from(s.getChildren()),u=a[a.length-1],c=l[l.length-1];u&&u.is("softBreak")&&c&&!c.is("softBreak")&&a.pop();const d=this.editor.model.schema;if(!Ga(a,d)||!Ga(l,d))return;const h=a.map(t=>t.is("text")?t.data:"@").join("").replace(/\u00A0/g," "),f=l.map(t=>t.is("text")?t.data:"@").join("").replace(/\u00A0/g," ");if(f===h)return;const p=ir(f,h),{firstChangeAt:g,insertions:m,deletions:v}=Ya(p);let y=null;e&&(y=this.editing.mapper.toModelRange(e.getFirstRange()));const b=h.substr(g,m),w=this.editor.model.createRange(this.editor.model.createPositionAt(s,g),this.editor.model.createPositionAt(s,g+v));this.editor.execute("input",{text:b,range:w,resultRange:y})}_handleTextMutation(t,e){if("text"!=t.type)return;const n=t.newText.replace(/\u00A0/g," "),r=t.oldText.replace(/\u00A0/g," ");if(r===n)return;const i=ir(r,n),{firstChangeAt:o,insertions:s,deletions:a}=Ya(i);let l=null;e&&(l=this.editing.mapper.toModelRange(e.getFirstRange()));const u=this.editing.view.createPositionAt(t.node,o),c=this.editing.mapper.toModelPosition(u),d=this.editor.model.createRange(c,c.getShiftedBy(a)),h=n.substr(o,s);this.editor.execute("input",{text:h,range:d,resultRange:l})}_handleTextNodeInsertion(t){if("children"!=t.type)return;const e=Ua(t),n=this.editing.view.createPositionAt(t.node,e.index),r=this.editing.mapper.toModelPosition(n);this.editor.execute("input",{text:e.values[0].data.replace(/\u00A0/g," "),range:this.editor.model.createRange(r)})}}function Ga(t,e){return t.every(t=>e.isInline(t))}function Ya(t){let e=null,n=null;for(let o=0;o