1window.RichText = { 2 create: function(domRef, object) { 3 const dotNetObject = object; 4 const toolbarOptions = [ 5 ['bold', 'italic', 'underline', 'strike'], 6 [{ 'list': 'ordered'}, { 'list': 'bullet' }, { 'list': 'check' }], 7 ['clean'] 8 ]; 9 10 var formats = [ 11 'bold', 12 'italic', 13 'strike', 14 'underline', 15 'list' 16 ]; 17 18 const quill = new Quill(domRef, { 19 modules:{ 20 toolbar: toolbarOptions, 21 keyboard: { 22 bindings: { 23 tab: { 24 key: 9, 25 handler: function (range, context) { 26 return true; 27 }, 28 }, 29 }, 30 } 31 }, 32 theme: 'snow', 33 formats: formats 34 }); 35 36 quill.on('text-change', (delta, oldDelta, source) => { 37 var value = quill.getSemanticHTML().replace(/\u00A0/g, ' ').replaceAll(' ', ' '); 38 dotNetObject.invokeMethodAsync('HandleInput', value); 39 }); 40 41 const toolbar = quill.getModule('toolbar'); 42 toolbar.controls.forEach((control) => { 43 control[1].tabIndex = -1 44 }) 45 }, 46 getValue: function(domRef) { 47 return domRef.Quill.getSemanticHTML(); 48 }, 49 setValue: function(domRef, value) { 50 const quill = Quill.find(domRef); 51 const delta = quill.clipboard.convert({ html: value }); 52 quill.setContents(delta, 'silent') 53 }, 54}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.