2019-10-06 04:57:44 +08:00
/ * !
2020-10-21 17:34:56 +08:00
* Quill Editor v1 . 3.7
2019-10-06 04:57:44 +08:00
* https : //quilljs.com/
* Copyright ( c ) 2014 , Jason Chen
* Copyright ( c ) 2013 , salesforce . com
* /
( function webpackUniversalModuleDefinition ( root , factory ) {
if ( typeof exports === 'object' && typeof module === 'object' )
module . exports = factory ( ) ;
else if ( typeof define === 'function' && define . amd )
define ( [ ] , factory ) ;
else if ( typeof exports === 'object' )
exports [ "Quill" ] = factory ( ) ;
else
root [ "Quill" ] = factory ( ) ;
} ) ( typeof self !== 'undefined' ? self : this , function ( ) {
return /******/ ( function ( modules ) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = { } ;
/******/
/******/ // The require function
/******/ function _ _webpack _require _ _ ( moduleId ) {
/******/
/******/ // Check if module is in cache
/******/ if ( installedModules [ moduleId ] ) {
/******/ return installedModules [ moduleId ] . exports ;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules [ moduleId ] = {
/******/ i : moduleId ,
/******/ l : false ,
/******/ exports : { }
/******/ } ;
/******/
/******/ // Execute the module function
/******/ modules [ moduleId ] . call ( module . exports , module , module . exports , _ _webpack _require _ _ ) ;
/******/
/******/ // Flag the module as loaded
/******/ module . l = true ;
/******/
/******/ // Return the exports of the module
/******/ return module . exports ;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ _ _webpack _require _ _ . m = modules ;
/******/
/******/ // expose the module cache
/******/ _ _webpack _require _ _ . c = installedModules ;
/******/
/******/ // define getter function for harmony exports
/******/ _ _webpack _require _ _ . d = function ( exports , name , getter ) {
/******/ if ( ! _ _webpack _require _ _ . o ( exports , name ) ) {
/******/ Object . defineProperty ( exports , name , {
/******/ configurable : false ,
/******/ enumerable : true ,
/******/ get : getter
/******/ } ) ;
/******/ }
/******/ } ;
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ _ _webpack _require _ _ . n = function ( module ) {
/******/ var getter = module && module . _ _esModule ?
/******/ function getDefault ( ) { return module [ 'default' ] ; } :
/******/ function getModuleExports ( ) { return module ; } ;
/******/ _ _webpack _require _ _ . d ( getter , 'a' , getter ) ;
/******/ return getter ;
/******/ } ;
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ _ _webpack _require _ _ . o = function ( object , property ) { return Object . prototype . hasOwnProperty . call ( object , property ) ; } ;
/******/
/******/ // __webpack_public_path__
/******/ _ _webpack _require _ _ . p = "" ;
/******/
/******/ // Load entry module and return exports
/******/ return _ _webpack _require _ _ ( _ _webpack _require _ _ . s = 110 ) ;
/******/ } )
/************************************************************************/
/******/ ( [
/* 0 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var container _1 = _ _webpack _require _ _ ( 17 ) ;
var format _1 = _ _webpack _require _ _ ( 18 ) ;
var leaf _1 = _ _webpack _require _ _ ( 19 ) ;
var scroll _1 = _ _webpack _require _ _ ( 45 ) ;
var inline _1 = _ _webpack _require _ _ ( 46 ) ;
var block _1 = _ _webpack _require _ _ ( 47 ) ;
var embed _1 = _ _webpack _require _ _ ( 48 ) ;
var text _1 = _ _webpack _require _ _ ( 49 ) ;
var attributor _1 = _ _webpack _require _ _ ( 12 ) ;
var class _1 = _ _webpack _require _ _ ( 32 ) ;
var style _1 = _ _webpack _require _ _ ( 33 ) ;
var store _1 = _ _webpack _require _ _ ( 31 ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var Parchment = {
Scope : Registry . Scope ,
create : Registry . create ,
find : Registry . find ,
query : Registry . query ,
register : Registry . register ,
Container : container _1 . default ,
Format : format _1 . default ,
Leaf : leaf _1 . default ,
Embed : embed _1 . default ,
Scroll : scroll _1 . default ,
Block : block _1 . default ,
Inline : inline _1 . default ,
Text : text _1 . default ,
Attributor : {
Attribute : attributor _1 . default ,
Class : class _1 . default ,
Style : style _1 . default ,
Store : store _1 . default ,
} ,
} ;
exports . default = Parchment ;
/***/ } ) ,
/* 1 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var ParchmentError = /** @class */ ( function ( _super ) {
_ _extends ( ParchmentError , _super ) ;
function ParchmentError ( message ) {
var _this = this ;
message = '[Parchment] ' + message ;
_this = _super . call ( this , message ) || this ;
_this . message = message ;
_this . name = _this . constructor . name ;
return _this ;
}
return ParchmentError ;
} ( Error ) ) ;
exports . ParchmentError = ParchmentError ;
var attributes = { } ;
var classes = { } ;
var tags = { } ;
var types = { } ;
exports . DATA _KEY = '__blot' ;
var Scope ;
( function ( Scope ) {
Scope [ Scope [ "TYPE" ] = 3 ] = "TYPE" ;
Scope [ Scope [ "LEVEL" ] = 12 ] = "LEVEL" ;
Scope [ Scope [ "ATTRIBUTE" ] = 13 ] = "ATTRIBUTE" ;
Scope [ Scope [ "BLOT" ] = 14 ] = "BLOT" ;
Scope [ Scope [ "INLINE" ] = 7 ] = "INLINE" ;
Scope [ Scope [ "BLOCK" ] = 11 ] = "BLOCK" ;
Scope [ Scope [ "BLOCK_BLOT" ] = 10 ] = "BLOCK_BLOT" ;
Scope [ Scope [ "INLINE_BLOT" ] = 6 ] = "INLINE_BLOT" ;
Scope [ Scope [ "BLOCK_ATTRIBUTE" ] = 9 ] = "BLOCK_ATTRIBUTE" ;
Scope [ Scope [ "INLINE_ATTRIBUTE" ] = 5 ] = "INLINE_ATTRIBUTE" ;
Scope [ Scope [ "ANY" ] = 15 ] = "ANY" ;
} ) ( Scope = exports . Scope || ( exports . Scope = { } ) ) ;
function create ( input , value ) {
var match = query ( input ) ;
if ( match == null ) {
throw new ParchmentError ( "Unable to create " + input + " blot" ) ;
}
var BlotClass = match ;
var node =
// @ts-ignore
input instanceof Node || input [ 'nodeType' ] === Node . TEXT _NODE ? input : BlotClass . create ( value ) ;
return new BlotClass ( node , value ) ;
}
exports . create = create ;
function find ( node , bubble ) {
if ( bubble === void 0 ) { bubble = false ; }
if ( node == null )
return null ;
// @ts-ignore
if ( node [ exports . DATA _KEY ] != null )
return node [ exports . DATA _KEY ] . blot ;
if ( bubble )
return find ( node . parentNode , bubble ) ;
return null ;
}
exports . find = find ;
function query ( query , scope ) {
if ( scope === void 0 ) { scope = Scope . ANY ; }
var match ;
if ( typeof query === 'string' ) {
match = types [ query ] || attributes [ query ] ;
// @ts-ignore
}
else if ( query instanceof Text || query [ 'nodeType' ] === Node . TEXT _NODE ) {
match = types [ 'text' ] ;
}
else if ( typeof query === 'number' ) {
if ( query & Scope . LEVEL & Scope . BLOCK ) {
match = types [ 'block' ] ;
}
else if ( query & Scope . LEVEL & Scope . INLINE ) {
match = types [ 'inline' ] ;
}
}
else if ( query instanceof HTMLElement ) {
var names = ( query . getAttribute ( 'class' ) || '' ) . split ( /\s+/ ) ;
for ( var i in names ) {
match = classes [ names [ i ] ] ;
if ( match )
break ;
}
match = match || tags [ query . tagName ] ;
}
if ( match == null )
return null ;
// @ts-ignore
if ( scope & Scope . LEVEL & match . scope && scope & Scope . TYPE & match . scope )
return match ;
return null ;
}
exports . query = query ;
function register ( ) {
var Definitions = [ ] ;
for ( var _i = 0 ; _i < arguments . length ; _i ++ ) {
Definitions [ _i ] = arguments [ _i ] ;
}
if ( Definitions . length > 1 ) {
return Definitions . map ( function ( d ) {
return register ( d ) ;
} ) ;
}
var Definition = Definitions [ 0 ] ;
if ( typeof Definition . blotName !== 'string' && typeof Definition . attrName !== 'string' ) {
throw new ParchmentError ( 'Invalid definition' ) ;
}
else if ( Definition . blotName === 'abstract' ) {
throw new ParchmentError ( 'Cannot register abstract class' ) ;
}
types [ Definition . blotName || Definition . attrName ] = Definition ;
if ( typeof Definition . keyName === 'string' ) {
attributes [ Definition . keyName ] = Definition ;
}
else {
if ( Definition . className != null ) {
classes [ Definition . className ] = Definition ;
}
if ( Definition . tagName != null ) {
if ( Array . isArray ( Definition . tagName ) ) {
Definition . tagName = Definition . tagName . map ( function ( tagName ) {
return tagName . toUpperCase ( ) ;
} ) ;
}
else {
Definition . tagName = Definition . tagName . toUpperCase ( ) ;
}
var tagNames = Array . isArray ( Definition . tagName ) ? Definition . tagName : [ Definition . tagName ] ;
tagNames . forEach ( function ( tag ) {
if ( tags [ tag ] == null || Definition . className == null ) {
tags [ tag ] = Definition ;
}
} ) ;
}
}
return Definition ;
}
exports . register = register ;
/***/ } ) ,
/* 2 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
var diff = _ _webpack _require _ _ ( 51 ) ;
var equal = _ _webpack _require _ _ ( 11 ) ;
var extend = _ _webpack _require _ _ ( 3 ) ;
var op = _ _webpack _require _ _ ( 20 ) ;
var NULL _CHARACTER = String . fromCharCode ( 0 ) ; // Placeholder char for embed in diff()
var Delta = function ( ops ) {
// Assume we are given a well formed ops
if ( Array . isArray ( ops ) ) {
this . ops = ops ;
} else if ( ops != null && Array . isArray ( ops . ops ) ) {
this . ops = ops . ops ;
} else {
this . ops = [ ] ;
}
} ;
Delta . prototype . insert = function ( text , attributes ) {
var newOp = { } ;
if ( text . length === 0 ) return this ;
newOp . insert = text ;
if ( attributes != null && typeof attributes === 'object' && Object . keys ( attributes ) . length > 0 ) {
newOp . attributes = attributes ;
}
return this . push ( newOp ) ;
} ;
Delta . prototype [ 'delete' ] = function ( length ) {
if ( length <= 0 ) return this ;
return this . push ( { 'delete' : length } ) ;
} ;
Delta . prototype . retain = function ( length , attributes ) {
if ( length <= 0 ) return this ;
var newOp = { retain : length } ;
if ( attributes != null && typeof attributes === 'object' && Object . keys ( attributes ) . length > 0 ) {
newOp . attributes = attributes ;
}
return this . push ( newOp ) ;
} ;
Delta . prototype . push = function ( newOp ) {
var index = this . ops . length ;
var lastOp = this . ops [ index - 1 ] ;
newOp = extend ( true , { } , newOp ) ;
if ( typeof lastOp === 'object' ) {
if ( typeof newOp [ 'delete' ] === 'number' && typeof lastOp [ 'delete' ] === 'number' ) {
this . ops [ index - 1 ] = { 'delete' : lastOp [ 'delete' ] + newOp [ 'delete' ] } ;
return this ;
}
// Since it does not matter if we insert before or after deleting at the same index,
// always prefer to insert first
if ( typeof lastOp [ 'delete' ] === 'number' && newOp . insert != null ) {
index -= 1 ;
lastOp = this . ops [ index - 1 ] ;
if ( typeof lastOp !== 'object' ) {
this . ops . unshift ( newOp ) ;
return this ;
}
}
if ( equal ( newOp . attributes , lastOp . attributes ) ) {
if ( typeof newOp . insert === 'string' && typeof lastOp . insert === 'string' ) {
this . ops [ index - 1 ] = { insert : lastOp . insert + newOp . insert } ;
if ( typeof newOp . attributes === 'object' ) this . ops [ index - 1 ] . attributes = newOp . attributes
return this ;
} else if ( typeof newOp . retain === 'number' && typeof lastOp . retain === 'number' ) {
this . ops [ index - 1 ] = { retain : lastOp . retain + newOp . retain } ;
if ( typeof newOp . attributes === 'object' ) this . ops [ index - 1 ] . attributes = newOp . attributes
return this ;
}
}
}
if ( index === this . ops . length ) {
this . ops . push ( newOp ) ;
} else {
this . ops . splice ( index , 0 , newOp ) ;
}
return this ;
} ;
Delta . prototype . chop = function ( ) {
var lastOp = this . ops [ this . ops . length - 1 ] ;
if ( lastOp && lastOp . retain && ! lastOp . attributes ) {
this . ops . pop ( ) ;
}
return this ;
} ;
Delta . prototype . filter = function ( predicate ) {
return this . ops . filter ( predicate ) ;
} ;
Delta . prototype . forEach = function ( predicate ) {
this . ops . forEach ( predicate ) ;
} ;
Delta . prototype . map = function ( predicate ) {
return this . ops . map ( predicate ) ;
} ;
Delta . prototype . partition = function ( predicate ) {
var passed = [ ] , failed = [ ] ;
this . forEach ( function ( op ) {
var target = predicate ( op ) ? passed : failed ;
target . push ( op ) ;
} ) ;
return [ passed , failed ] ;
} ;
Delta . prototype . reduce = function ( predicate , initial ) {
return this . ops . reduce ( predicate , initial ) ;
} ;
Delta . prototype . changeLength = function ( ) {
return this . reduce ( function ( length , elem ) {
if ( elem . insert ) {
return length + op . length ( elem ) ;
} else if ( elem . delete ) {
return length - elem . delete ;
}
return length ;
} , 0 ) ;
} ;
Delta . prototype . length = function ( ) {
return this . reduce ( function ( length , elem ) {
return length + op . length ( elem ) ;
} , 0 ) ;
} ;
Delta . prototype . slice = function ( start , end ) {
start = start || 0 ;
if ( typeof end !== 'number' ) end = Infinity ;
var ops = [ ] ;
var iter = op . iterator ( this . ops ) ;
var index = 0 ;
while ( index < end && iter . hasNext ( ) ) {
var nextOp ;
if ( index < start ) {
nextOp = iter . next ( start - index ) ;
} else {
nextOp = iter . next ( end - index ) ;
ops . push ( nextOp ) ;
}
index += op . length ( nextOp ) ;
}
return new Delta ( ops ) ;
} ;
Delta . prototype . compose = function ( other ) {
var thisIter = op . iterator ( this . ops ) ;
var otherIter = op . iterator ( other . ops ) ;
2020-10-21 17:34:56 +08:00
var ops = [ ] ;
var firstOther = otherIter . peek ( ) ;
if ( firstOther != null && typeof firstOther . retain === 'number' && firstOther . attributes == null ) {
var firstLeft = firstOther . retain ;
while ( thisIter . peekType ( ) === 'insert' && thisIter . peekLength ( ) <= firstLeft ) {
firstLeft -= thisIter . peekLength ( ) ;
ops . push ( thisIter . next ( ) ) ;
}
if ( firstOther . retain - firstLeft > 0 ) {
otherIter . next ( firstOther . retain - firstLeft ) ;
}
}
var delta = new Delta ( ops ) ;
2019-10-06 04:57:44 +08:00
while ( thisIter . hasNext ( ) || otherIter . hasNext ( ) ) {
if ( otherIter . peekType ( ) === 'insert' ) {
delta . push ( otherIter . next ( ) ) ;
} else if ( thisIter . peekType ( ) === 'delete' ) {
delta . push ( thisIter . next ( ) ) ;
} else {
var length = Math . min ( thisIter . peekLength ( ) , otherIter . peekLength ( ) ) ;
var thisOp = thisIter . next ( length ) ;
var otherOp = otherIter . next ( length ) ;
if ( typeof otherOp . retain === 'number' ) {
var newOp = { } ;
if ( typeof thisOp . retain === 'number' ) {
newOp . retain = length ;
} else {
newOp . insert = thisOp . insert ;
}
// Preserve null when composing with a retain, otherwise remove it for inserts
var attributes = op . attributes . compose ( thisOp . attributes , otherOp . attributes , typeof thisOp . retain === 'number' ) ;
if ( attributes ) newOp . attributes = attributes ;
delta . push ( newOp ) ;
2020-10-21 17:34:56 +08:00
// Optimization if rest of other is just retain
if ( ! otherIter . hasNext ( ) && equal ( delta . ops [ delta . ops . length - 1 ] , newOp ) ) {
var rest = new Delta ( thisIter . rest ( ) ) ;
return delta . concat ( rest ) . chop ( ) ;
}
2019-10-06 04:57:44 +08:00
// Other op should be delete, we could be an insert or retain
// Insert + delete cancels out
} else if ( typeof otherOp [ 'delete' ] === 'number' && typeof thisOp . retain === 'number' ) {
delta . push ( otherOp ) ;
}
}
}
return delta . chop ( ) ;
} ;
Delta . prototype . concat = function ( other ) {
var delta = new Delta ( this . ops . slice ( ) ) ;
if ( other . ops . length > 0 ) {
delta . push ( other . ops [ 0 ] ) ;
delta . ops = delta . ops . concat ( other . ops . slice ( 1 ) ) ;
}
return delta ;
} ;
Delta . prototype . diff = function ( other , index ) {
if ( this . ops === other . ops ) {
return new Delta ( ) ;
}
var strings = [ this , other ] . map ( function ( delta ) {
return delta . map ( function ( op ) {
if ( op . insert != null ) {
return typeof op . insert === 'string' ? op . insert : NULL _CHARACTER ;
}
var prep = ( delta === other ) ? 'on' : 'with' ;
throw new Error ( 'diff() called ' + prep + ' non-document' ) ;
} ) . join ( '' ) ;
} ) ;
var delta = new Delta ( ) ;
var diffResult = diff ( strings [ 0 ] , strings [ 1 ] , index ) ;
var thisIter = op . iterator ( this . ops ) ;
var otherIter = op . iterator ( other . ops ) ;
diffResult . forEach ( function ( component ) {
var length = component [ 1 ] . length ;
while ( length > 0 ) {
var opLength = 0 ;
switch ( component [ 0 ] ) {
case diff . INSERT :
opLength = Math . min ( otherIter . peekLength ( ) , length ) ;
delta . push ( otherIter . next ( opLength ) ) ;
break ;
case diff . DELETE :
opLength = Math . min ( length , thisIter . peekLength ( ) ) ;
thisIter . next ( opLength ) ;
delta [ 'delete' ] ( opLength ) ;
break ;
case diff . EQUAL :
opLength = Math . min ( thisIter . peekLength ( ) , otherIter . peekLength ( ) , length ) ;
var thisOp = thisIter . next ( opLength ) ;
var otherOp = otherIter . next ( opLength ) ;
if ( equal ( thisOp . insert , otherOp . insert ) ) {
delta . retain ( opLength , op . attributes . diff ( thisOp . attributes , otherOp . attributes ) ) ;
} else {
delta . push ( otherOp ) [ 'delete' ] ( opLength ) ;
}
break ;
}
length -= opLength ;
}
} ) ;
return delta . chop ( ) ;
} ;
Delta . prototype . eachLine = function ( predicate , newline ) {
newline = newline || '\n' ;
var iter = op . iterator ( this . ops ) ;
var line = new Delta ( ) ;
var i = 0 ;
while ( iter . hasNext ( ) ) {
if ( iter . peekType ( ) !== 'insert' ) return ;
var thisOp = iter . peek ( ) ;
var start = op . length ( thisOp ) - iter . peekLength ( ) ;
var index = typeof thisOp . insert === 'string' ?
thisOp . insert . indexOf ( newline , start ) - start : - 1 ;
if ( index < 0 ) {
line . push ( iter . next ( ) ) ;
} else if ( index > 0 ) {
line . push ( iter . next ( index ) ) ;
} else {
if ( predicate ( line , iter . next ( 1 ) . attributes || { } , i ) === false ) {
return ;
}
i += 1 ;
line = new Delta ( ) ;
}
}
if ( line . length ( ) > 0 ) {
predicate ( line , { } , i ) ;
}
} ;
Delta . prototype . transform = function ( other , priority ) {
priority = ! ! priority ;
if ( typeof other === 'number' ) {
return this . transformPosition ( other , priority ) ;
}
var thisIter = op . iterator ( this . ops ) ;
var otherIter = op . iterator ( other . ops ) ;
var delta = new Delta ( ) ;
while ( thisIter . hasNext ( ) || otherIter . hasNext ( ) ) {
if ( thisIter . peekType ( ) === 'insert' && ( priority || otherIter . peekType ( ) !== 'insert' ) ) {
delta . retain ( op . length ( thisIter . next ( ) ) ) ;
} else if ( otherIter . peekType ( ) === 'insert' ) {
delta . push ( otherIter . next ( ) ) ;
} else {
var length = Math . min ( thisIter . peekLength ( ) , otherIter . peekLength ( ) ) ;
var thisOp = thisIter . next ( length ) ;
var otherOp = otherIter . next ( length ) ;
if ( thisOp [ 'delete' ] ) {
// Our delete either makes their delete redundant or removes their retain
continue ;
} else if ( otherOp [ 'delete' ] ) {
delta . push ( otherOp ) ;
} else {
// We retain either their retain or insert
delta . retain ( length , op . attributes . transform ( thisOp . attributes , otherOp . attributes , priority ) ) ;
}
}
}
return delta . chop ( ) ;
} ;
Delta . prototype . transformPosition = function ( index , priority ) {
priority = ! ! priority ;
var thisIter = op . iterator ( this . ops ) ;
var offset = 0 ;
while ( thisIter . hasNext ( ) && offset <= index ) {
var length = thisIter . peekLength ( ) ;
var nextType = thisIter . peekType ( ) ;
thisIter . next ( ) ;
if ( nextType === 'delete' ) {
index -= Math . min ( length , index - offset ) ;
continue ;
} else if ( nextType === 'insert' && ( offset < index || ! priority ) ) {
index += length ;
}
offset += length ;
}
return index ;
} ;
module . exports = Delta ;
/***/ } ) ,
/* 3 */
/***/ ( function ( module , exports ) {
'use strict' ;
var hasOwn = Object . prototype . hasOwnProperty ;
var toStr = Object . prototype . toString ;
2020-10-21 17:34:56 +08:00
var defineProperty = Object . defineProperty ;
var gOPD = Object . getOwnPropertyDescriptor ;
2019-10-06 04:57:44 +08:00
var isArray = function isArray ( arr ) {
if ( typeof Array . isArray === 'function' ) {
return Array . isArray ( arr ) ;
}
return toStr . call ( arr ) === '[object Array]' ;
} ;
var isPlainObject = function isPlainObject ( obj ) {
if ( ! obj || toStr . call ( obj ) !== '[object Object]' ) {
return false ;
}
var hasOwnConstructor = hasOwn . call ( obj , 'constructor' ) ;
var hasIsPrototypeOf = obj . constructor && obj . constructor . prototype && hasOwn . call ( obj . constructor . prototype , 'isPrototypeOf' ) ;
// Not own constructor property must be Object
if ( obj . constructor && ! hasOwnConstructor && ! hasIsPrototypeOf ) {
return false ;
}
// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.
var key ;
for ( key in obj ) { /**/ }
return typeof key === 'undefined' || hasOwn . call ( obj , key ) ;
} ;
2020-10-21 17:34:56 +08:00
// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target
var setProperty = function setProperty ( target , options ) {
if ( defineProperty && options . name === '__proto__' ) {
defineProperty ( target , options . name , {
enumerable : true ,
configurable : true ,
value : options . newValue ,
writable : true
} ) ;
} else {
target [ options . name ] = options . newValue ;
}
} ;
// Return undefined instead of __proto__ if '__proto__' is not an own property
var getProperty = function getProperty ( obj , name ) {
if ( name === '__proto__' ) {
if ( ! hasOwn . call ( obj , name ) ) {
return void 0 ;
} else if ( gOPD ) {
// In early versions of node, obj['__proto__'] is buggy when obj has
// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.
return gOPD ( obj , name ) . value ;
}
}
return obj [ name ] ;
} ;
2019-10-06 04:57:44 +08:00
module . exports = function extend ( ) {
var options , name , src , copy , copyIsArray , clone ;
var target = arguments [ 0 ] ;
var i = 1 ;
var length = arguments . length ;
var deep = false ;
// Handle a deep copy situation
if ( typeof target === 'boolean' ) {
deep = target ;
target = arguments [ 1 ] || { } ;
// skip the boolean and the target
i = 2 ;
}
if ( target == null || ( typeof target !== 'object' && typeof target !== 'function' ) ) {
target = { } ;
}
for ( ; i < length ; ++ i ) {
options = arguments [ i ] ;
// Only deal with non-null/undefined values
if ( options != null ) {
// Extend the base object
for ( name in options ) {
2020-10-21 17:34:56 +08:00
src = getProperty ( target , name ) ;
copy = getProperty ( options , name ) ;
2019-10-06 04:57:44 +08:00
// Prevent never-ending loop
if ( target !== copy ) {
// Recurse if we're merging plain objects or arrays
if ( deep && copy && ( isPlainObject ( copy ) || ( copyIsArray = isArray ( copy ) ) ) ) {
if ( copyIsArray ) {
copyIsArray = false ;
clone = src && isArray ( src ) ? src : [ ] ;
} else {
clone = src && isPlainObject ( src ) ? src : { } ;
}
// Never move original objects, clone them
2020-10-21 17:34:56 +08:00
setProperty ( target , { name : name , newValue : extend ( deep , clone , copy ) } ) ;
2019-10-06 04:57:44 +08:00
// Don't bring in undefined values
} else if ( typeof copy !== 'undefined' ) {
2020-10-21 17:34:56 +08:00
setProperty ( target , { name : name , newValue : copy } ) ;
2019-10-06 04:57:44 +08:00
}
}
}
}
}
// Return the modified object
return target ;
} ;
/***/ } ) ,
/* 4 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = exports . BlockEmbed = exports . bubbleFormats = undefined ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _extend = _ _webpack _require _ _ ( 3 ) ;
var _extend2 = _interopRequireDefault ( _extend ) ;
var _quillDelta = _ _webpack _require _ _ ( 2 ) ;
var _quillDelta2 = _interopRequireDefault ( _quillDelta ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _break = _ _webpack _require _ _ ( 16 ) ;
var _break2 = _interopRequireDefault ( _break ) ;
var _inline = _ _webpack _require _ _ ( 6 ) ;
var _inline2 = _interopRequireDefault ( _inline ) ;
var _text = _ _webpack _require _ _ ( 7 ) ;
var _text2 = _interopRequireDefault ( _text ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var NEWLINE _LENGTH = 1 ;
var BlockEmbed = function ( _Parchment$Embed ) {
_inherits ( BlockEmbed , _Parchment$Embed ) ;
function BlockEmbed ( ) {
_classCallCheck ( this , BlockEmbed ) ;
return _possibleConstructorReturn ( this , ( BlockEmbed . _ _proto _ _ || Object . getPrototypeOf ( BlockEmbed ) ) . apply ( this , arguments ) ) ;
}
_createClass ( BlockEmbed , [ {
key : 'attach' ,
value : function attach ( ) {
_get ( BlockEmbed . prototype . _ _proto _ _ || Object . getPrototypeOf ( BlockEmbed . prototype ) , 'attach' , this ) . call ( this ) ;
this . attributes = new _parchment2 . default . Attributor . Store ( this . domNode ) ;
}
} , {
key : 'delta' ,
value : function delta ( ) {
return new _quillDelta2 . default ( ) . insert ( this . value ( ) , ( 0 , _extend2 . default ) ( this . formats ( ) , this . attributes . values ( ) ) ) ;
}
} , {
key : 'format' ,
value : function format ( name , value ) {
var attribute = _parchment2 . default . query ( name , _parchment2 . default . Scope . BLOCK _ATTRIBUTE ) ;
if ( attribute != null ) {
this . attributes . attribute ( attribute , value ) ;
}
}
} , {
key : 'formatAt' ,
value : function formatAt ( index , length , name , value ) {
this . format ( name , value ) ;
}
} , {
key : 'insertAt' ,
value : function insertAt ( index , value , def ) {
if ( typeof value === 'string' && value . endsWith ( '\n' ) ) {
var block = _parchment2 . default . create ( Block . blotName ) ;
this . parent . insertBefore ( block , index === 0 ? this : this . next ) ;
block . insertAt ( 0 , value . slice ( 0 , - 1 ) ) ;
} else {
_get ( BlockEmbed . prototype . _ _proto _ _ || Object . getPrototypeOf ( BlockEmbed . prototype ) , 'insertAt' , this ) . call ( this , index , value , def ) ;
}
}
} ] ) ;
return BlockEmbed ;
} ( _parchment2 . default . Embed ) ;
BlockEmbed . scope = _parchment2 . default . Scope . BLOCK _BLOT ;
// It is important for cursor behavior BlockEmbeds use tags that are block level elements
var Block = function ( _Parchment$Block ) {
_inherits ( Block , _Parchment$Block ) ;
function Block ( domNode ) {
_classCallCheck ( this , Block ) ;
var _this2 = _possibleConstructorReturn ( this , ( Block . _ _proto _ _ || Object . getPrototypeOf ( Block ) ) . call ( this , domNode ) ) ;
_this2 . cache = { } ;
return _this2 ;
}
_createClass ( Block , [ {
key : 'delta' ,
value : function delta ( ) {
if ( this . cache . delta == null ) {
this . cache . delta = this . descendants ( _parchment2 . default . Leaf ) . reduce ( function ( delta , leaf ) {
if ( leaf . length ( ) === 0 ) {
return delta ;
} else {
return delta . insert ( leaf . value ( ) , bubbleFormats ( leaf ) ) ;
}
} , new _quillDelta2 . default ( ) ) . insert ( '\n' , bubbleFormats ( this ) ) ;
}
return this . cache . delta ;
}
} , {
key : 'deleteAt' ,
value : function deleteAt ( index , length ) {
_get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'deleteAt' , this ) . call ( this , index , length ) ;
this . cache = { } ;
}
} , {
key : 'formatAt' ,
value : function formatAt ( index , length , name , value ) {
if ( length <= 0 ) return ;
if ( _parchment2 . default . query ( name , _parchment2 . default . Scope . BLOCK ) ) {
if ( index + length === this . length ( ) ) {
this . format ( name , value ) ;
}
} else {
_get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'formatAt' , this ) . call ( this , index , Math . min ( length , this . length ( ) - index - 1 ) , name , value ) ;
}
this . cache = { } ;
}
} , {
key : 'insertAt' ,
value : function insertAt ( index , value , def ) {
if ( def != null ) return _get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'insertAt' , this ) . call ( this , index , value , def ) ;
if ( value . length === 0 ) return ;
var lines = value . split ( '\n' ) ;
var text = lines . shift ( ) ;
if ( text . length > 0 ) {
if ( index < this . length ( ) - 1 || this . children . tail == null ) {
_get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'insertAt' , this ) . call ( this , Math . min ( index , this . length ( ) - 1 ) , text ) ;
} else {
this . children . tail . insertAt ( this . children . tail . length ( ) , text ) ;
}
this . cache = { } ;
}
var block = this ;
lines . reduce ( function ( index , line ) {
block = block . split ( index , true ) ;
block . insertAt ( 0 , line ) ;
return line . length ;
} , index + text . length ) ;
}
} , {
key : 'insertBefore' ,
value : function insertBefore ( blot , ref ) {
var head = this . children . head ;
_get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'insertBefore' , this ) . call ( this , blot , ref ) ;
if ( head instanceof _break2 . default ) {
head . remove ( ) ;
}
this . cache = { } ;
}
} , {
key : 'length' ,
value : function length ( ) {
if ( this . cache . length == null ) {
this . cache . length = _get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'length' , this ) . call ( this ) + NEWLINE _LENGTH ;
}
return this . cache . length ;
}
} , {
key : 'moveChildren' ,
value : function moveChildren ( target , ref ) {
_get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'moveChildren' , this ) . call ( this , target , ref ) ;
this . cache = { } ;
}
} , {
key : 'optimize' ,
value : function optimize ( context ) {
_get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'optimize' , this ) . call ( this , context ) ;
this . cache = { } ;
}
} , {
key : 'path' ,
value : function path ( index ) {
return _get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'path' , this ) . call ( this , index , true ) ;
}
} , {
key : 'removeChild' ,
value : function removeChild ( child ) {
_get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'removeChild' , this ) . call ( this , child ) ;
this . cache = { } ;
}
} , {
key : 'split' ,
value : function split ( index ) {
var force = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : false ;
if ( force && ( index === 0 || index >= this . length ( ) - NEWLINE _LENGTH ) ) {
var clone = this . clone ( ) ;
if ( index === 0 ) {
this . parent . insertBefore ( clone , this ) ;
return this ;
} else {
this . parent . insertBefore ( clone , this . next ) ;
return clone ;
}
} else {
var next = _get ( Block . prototype . _ _proto _ _ || Object . getPrototypeOf ( Block . prototype ) , 'split' , this ) . call ( this , index , force ) ;
this . cache = { } ;
return next ;
}
}
} ] ) ;
return Block ;
} ( _parchment2 . default . Block ) ;
Block . blotName = 'block' ;
Block . tagName = 'P' ;
Block . defaultChild = 'break' ;
Block . allowedChildren = [ _inline2 . default , _parchment2 . default . Embed , _text2 . default ] ;
function bubbleFormats ( blot ) {
var formats = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
if ( blot == null ) return formats ;
if ( typeof blot . formats === 'function' ) {
formats = ( 0 , _extend2 . default ) ( formats , blot . formats ( ) ) ;
}
if ( blot . parent == null || blot . parent . blotName == 'scroll' || blot . parent . statics . scope !== blot . statics . scope ) {
return formats ;
}
return bubbleFormats ( blot . parent , formats ) ;
}
exports . bubbleFormats = bubbleFormats ;
exports . BlockEmbed = BlockEmbed ;
exports . default = Block ;
/***/ } ) ,
/* 5 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = exports . overload = exports . expandConfig = undefined ;
var _typeof = typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ? function ( obj ) { return typeof obj ; } : function ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _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" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
_ _webpack _require _ _ ( 50 ) ;
var _quillDelta = _ _webpack _require _ _ ( 2 ) ;
var _quillDelta2 = _interopRequireDefault ( _quillDelta ) ;
var _editor = _ _webpack _require _ _ ( 14 ) ;
var _editor2 = _interopRequireDefault ( _editor ) ;
var _emitter3 = _ _webpack _require _ _ ( 8 ) ;
var _emitter4 = _interopRequireDefault ( _emitter3 ) ;
var _module = _ _webpack _require _ _ ( 9 ) ;
var _module2 = _interopRequireDefault ( _module ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _selection = _ _webpack _require _ _ ( 15 ) ;
var _selection2 = _interopRequireDefault ( _selection ) ;
var _extend = _ _webpack _require _ _ ( 3 ) ;
var _extend2 = _interopRequireDefault ( _extend ) ;
var _logger = _ _webpack _require _ _ ( 10 ) ;
var _logger2 = _interopRequireDefault ( _logger ) ;
var _theme = _ _webpack _require _ _ ( 34 ) ;
var _theme2 = _interopRequireDefault ( _theme ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _defineProperty ( obj , key , value ) { if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var debug = ( 0 , _logger2 . default ) ( 'quill' ) ;
var Quill = function ( ) {
_createClass ( Quill , null , [ {
key : 'debug' ,
value : function debug ( limit ) {
if ( limit === true ) {
limit = 'log' ;
}
_logger2 . default . level ( limit ) ;
}
} , {
key : 'find' ,
value : function find ( node ) {
return node . _ _quill || _parchment2 . default . find ( node ) ;
}
} , {
key : 'import' ,
value : function _import ( name ) {
if ( this . imports [ name ] == null ) {
debug . error ( 'Cannot import ' + name + '. Are you sure it was registered?' ) ;
}
return this . imports [ name ] ;
}
} , {
key : 'register' ,
value : function register ( path , target ) {
var _this = this ;
var overwrite = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : false ;
if ( typeof path !== 'string' ) {
var name = path . attrName || path . blotName ;
if ( typeof name === 'string' ) {
// register(Blot | Attributor, overwrite)
this . register ( 'formats/' + name , path , target ) ;
} else {
Object . keys ( path ) . forEach ( function ( key ) {
_this . register ( key , path [ key ] , target ) ;
} ) ;
}
} else {
if ( this . imports [ path ] != null && ! overwrite ) {
debug . warn ( 'Overwriting ' + path + ' with' , target ) ;
}
this . imports [ path ] = target ;
if ( ( path . startsWith ( 'blots/' ) || path . startsWith ( 'formats/' ) ) && target . blotName !== 'abstract' ) {
_parchment2 . default . register ( target ) ;
} else if ( path . startsWith ( 'modules' ) && typeof target . register === 'function' ) {
target . register ( ) ;
}
}
}
} ] ) ;
function Quill ( container ) {
var _this2 = this ;
var options = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
_classCallCheck ( this , Quill ) ;
this . options = expandConfig ( container , options ) ;
this . container = this . options . container ;
if ( this . container == null ) {
return debug . error ( 'Invalid Quill container' , container ) ;
}
if ( this . options . debug ) {
Quill . debug ( this . options . debug ) ;
}
var html = this . container . innerHTML . trim ( ) ;
this . container . classList . add ( 'ql-container' ) ;
this . container . innerHTML = '' ;
this . container . _ _quill = this ;
this . root = this . addContainer ( 'ql-editor' ) ;
this . root . classList . add ( 'ql-blank' ) ;
this . root . setAttribute ( 'data-gramm' , false ) ;
this . scrollingContainer = this . options . scrollingContainer || this . root ;
this . emitter = new _emitter4 . default ( ) ;
this . scroll = _parchment2 . default . create ( this . root , {
emitter : this . emitter ,
whitelist : this . options . formats
} ) ;
this . editor = new _editor2 . default ( this . scroll ) ;
this . selection = new _selection2 . default ( this . scroll , this . emitter ) ;
this . theme = new this . options . theme ( this , this . options ) ;
this . keyboard = this . theme . addModule ( 'keyboard' ) ;
this . clipboard = this . theme . addModule ( 'clipboard' ) ;
this . history = this . theme . addModule ( 'history' ) ;
this . theme . init ( ) ;
this . emitter . on ( _emitter4 . default . events . EDITOR _CHANGE , function ( type ) {
if ( type === _emitter4 . default . events . TEXT _CHANGE ) {
_this2 . root . classList . toggle ( 'ql-blank' , _this2 . editor . isBlank ( ) ) ;
}
} ) ;
this . emitter . on ( _emitter4 . default . events . SCROLL _UPDATE , function ( source , mutations ) {
var range = _this2 . selection . lastRange ;
var index = range && range . length === 0 ? range . index : undefined ;
modify . call ( _this2 , function ( ) {
return _this2 . editor . update ( null , mutations , index ) ;
} , source ) ;
} ) ;
var contents = this . clipboard . convert ( '<div class=\'ql-editor\' style="white-space: normal;">' + html + '<p><br></p></div>' ) ;
this . setContents ( contents ) ;
this . history . clear ( ) ;
if ( this . options . placeholder ) {
this . root . setAttribute ( 'data-placeholder' , this . options . placeholder ) ;
}
if ( this . options . readOnly ) {
this . disable ( ) ;
}
}
_createClass ( Quill , [ {
key : 'addContainer' ,
value : function addContainer ( container ) {
var refNode = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : null ;
if ( typeof container === 'string' ) {
var className = container ;
container = document . createElement ( 'div' ) ;
container . classList . add ( className ) ;
}
this . container . insertBefore ( container , refNode ) ;
return container ;
}
} , {
key : 'blur' ,
value : function blur ( ) {
this . selection . setRange ( null ) ;
}
} , {
key : 'deleteText' ,
value : function deleteText ( index , length , source ) {
var _this3 = this ;
var _overload = overload ( index , length , source ) ;
var _overload2 = _slicedToArray ( _overload , 4 ) ;
index = _overload2 [ 0 ] ;
length = _overload2 [ 1 ] ;
source = _overload2 [ 3 ] ;
return modify . call ( this , function ( ) {
return _this3 . editor . deleteText ( index , length ) ;
} , source , index , - 1 * length ) ;
}
} , {
key : 'disable' ,
value : function disable ( ) {
this . enable ( false ) ;
}
} , {
key : 'enable' ,
value : function enable ( ) {
var enabled = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : true ;
this . scroll . enable ( enabled ) ;
this . container . classList . toggle ( 'ql-disabled' , ! enabled ) ;
}
} , {
key : 'focus' ,
value : function focus ( ) {
var scrollTop = this . scrollingContainer . scrollTop ;
this . selection . focus ( ) ;
this . scrollingContainer . scrollTop = scrollTop ;
this . scrollIntoView ( ) ;
}
} , {
key : 'format' ,
value : function format ( name , value ) {
var _this4 = this ;
var source = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : _emitter4 . default . sources . API ;
return modify . call ( this , function ( ) {
var range = _this4 . getSelection ( true ) ;
var change = new _quillDelta2 . default ( ) ;
if ( range == null ) {
return change ;
} else if ( _parchment2 . default . query ( name , _parchment2 . default . Scope . BLOCK ) ) {
change = _this4 . editor . formatLine ( range . index , range . length , _defineProperty ( { } , name , value ) ) ;
} else if ( range . length === 0 ) {
_this4 . selection . format ( name , value ) ;
return change ;
} else {
change = _this4 . editor . formatText ( range . index , range . length , _defineProperty ( { } , name , value ) ) ;
}
_this4 . setSelection ( range , _emitter4 . default . sources . SILENT ) ;
return change ;
} , source ) ;
}
} , {
key : 'formatLine' ,
value : function formatLine ( index , length , name , value , source ) {
var _this5 = this ;
var formats = void 0 ;
var _overload3 = overload ( index , length , name , value , source ) ;
var _overload4 = _slicedToArray ( _overload3 , 4 ) ;
index = _overload4 [ 0 ] ;
length = _overload4 [ 1 ] ;
formats = _overload4 [ 2 ] ;
source = _overload4 [ 3 ] ;
return modify . call ( this , function ( ) {
return _this5 . editor . formatLine ( index , length , formats ) ;
} , source , index , 0 ) ;
}
} , {
key : 'formatText' ,
value : function formatText ( index , length , name , value , source ) {
var _this6 = this ;
var formats = void 0 ;
var _overload5 = overload ( index , length , name , value , source ) ;
var _overload6 = _slicedToArray ( _overload5 , 4 ) ;
index = _overload6 [ 0 ] ;
length = _overload6 [ 1 ] ;
formats = _overload6 [ 2 ] ;
source = _overload6 [ 3 ] ;
return modify . call ( this , function ( ) {
return _this6 . editor . formatText ( index , length , formats ) ;
} , source , index , 0 ) ;
}
} , {
key : 'getBounds' ,
value : function getBounds ( index ) {
var length = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 0 ;
var bounds = void 0 ;
if ( typeof index === 'number' ) {
bounds = this . selection . getBounds ( index , length ) ;
} else {
bounds = this . selection . getBounds ( index . index , index . length ) ;
}
var containerBounds = this . container . getBoundingClientRect ( ) ;
return {
bottom : bounds . bottom - containerBounds . top ,
height : bounds . height ,
left : bounds . left - containerBounds . left ,
right : bounds . right - containerBounds . left ,
top : bounds . top - containerBounds . top ,
width : bounds . width
} ;
}
} , {
key : 'getContents' ,
value : function getContents ( ) {
var index = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : 0 ;
var length = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : this . getLength ( ) - index ;
var _overload7 = overload ( index , length ) ;
var _overload8 = _slicedToArray ( _overload7 , 2 ) ;
index = _overload8 [ 0 ] ;
length = _overload8 [ 1 ] ;
return this . editor . getContents ( index , length ) ;
}
} , {
key : 'getFormat' ,
value : function getFormat ( ) {
var index = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : this . getSelection ( true ) ;
var length = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 0 ;
if ( typeof index === 'number' ) {
return this . editor . getFormat ( index , length ) ;
} else {
return this . editor . getFormat ( index . index , index . length ) ;
}
}
} , {
key : 'getIndex' ,
value : function getIndex ( blot ) {
return blot . offset ( this . scroll ) ;
}
} , {
key : 'getLength' ,
value : function getLength ( ) {
return this . scroll . length ( ) ;
}
} , {
key : 'getLeaf' ,
value : function getLeaf ( index ) {
return this . scroll . leaf ( index ) ;
}
} , {
key : 'getLine' ,
value : function getLine ( index ) {
return this . scroll . line ( index ) ;
}
} , {
key : 'getLines' ,
value : function getLines ( ) {
var index = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : 0 ;
var length = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : Number . MAX _VALUE ;
if ( typeof index !== 'number' ) {
return this . scroll . lines ( index . index , index . length ) ;
} else {
return this . scroll . lines ( index , length ) ;
}
}
} , {
key : 'getModule' ,
value : function getModule ( name ) {
return this . theme . modules [ name ] ;
}
} , {
key : 'getSelection' ,
value : function getSelection ( ) {
var focus = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : false ;
if ( focus ) this . focus ( ) ;
this . update ( ) ; // Make sure we access getRange with editor in consistent state
return this . selection . getRange ( ) [ 0 ] ;
}
} , {
key : 'getText' ,
value : function getText ( ) {
var index = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : 0 ;
var length = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : this . getLength ( ) - index ;
var _overload9 = overload ( index , length ) ;
var _overload10 = _slicedToArray ( _overload9 , 2 ) ;
index = _overload10 [ 0 ] ;
length = _overload10 [ 1 ] ;
return this . editor . getText ( index , length ) ;
}
} , {
key : 'hasFocus' ,
value : function hasFocus ( ) {
return this . selection . hasFocus ( ) ;
}
} , {
key : 'insertEmbed' ,
value : function insertEmbed ( index , embed , value ) {
var _this7 = this ;
var source = arguments . length > 3 && arguments [ 3 ] !== undefined ? arguments [ 3 ] : Quill . sources . API ;
return modify . call ( this , function ( ) {
return _this7 . editor . insertEmbed ( index , embed , value ) ;
} , source , index ) ;
}
} , {
key : 'insertText' ,
value : function insertText ( index , text , name , value , source ) {
var _this8 = this ;
var formats = void 0 ;
var _overload11 = overload ( index , 0 , name , value , source ) ;
var _overload12 = _slicedToArray ( _overload11 , 4 ) ;
index = _overload12 [ 0 ] ;
formats = _overload12 [ 2 ] ;
source = _overload12 [ 3 ] ;
return modify . call ( this , function ( ) {
return _this8 . editor . insertText ( index , text , formats ) ;
} , source , index , text . length ) ;
}
} , {
key : 'isEnabled' ,
value : function isEnabled ( ) {
return ! this . container . classList . contains ( 'ql-disabled' ) ;
}
} , {
key : 'off' ,
value : function off ( ) {
return this . emitter . off . apply ( this . emitter , arguments ) ;
}
} , {
key : 'on' ,
value : function on ( ) {
return this . emitter . on . apply ( this . emitter , arguments ) ;
}
} , {
key : 'once' ,
value : function once ( ) {
return this . emitter . once . apply ( this . emitter , arguments ) ;
}
} , {
key : 'pasteHTML' ,
value : function pasteHTML ( index , html , source ) {
this . clipboard . dangerouslyPasteHTML ( index , html , source ) ;
}
} , {
key : 'removeFormat' ,
value : function removeFormat ( index , length , source ) {
var _this9 = this ;
var _overload13 = overload ( index , length , source ) ;
var _overload14 = _slicedToArray ( _overload13 , 4 ) ;
index = _overload14 [ 0 ] ;
length = _overload14 [ 1 ] ;
source = _overload14 [ 3 ] ;
return modify . call ( this , function ( ) {
return _this9 . editor . removeFormat ( index , length ) ;
} , source , index ) ;
}
} , {
key : 'scrollIntoView' ,
value : function scrollIntoView ( ) {
this . selection . scrollIntoView ( this . scrollingContainer ) ;
}
} , {
key : 'setContents' ,
value : function setContents ( delta ) {
var _this10 = this ;
var source = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : _emitter4 . default . sources . API ;
return modify . call ( this , function ( ) {
delta = new _quillDelta2 . default ( delta ) ;
var length = _this10 . getLength ( ) ;
var deleted = _this10 . editor . deleteText ( 0 , length ) ;
var applied = _this10 . editor . applyDelta ( delta ) ;
var lastOp = applied . ops [ applied . ops . length - 1 ] ;
if ( lastOp != null && typeof lastOp . insert === 'string' && lastOp . insert [ lastOp . insert . length - 1 ] === '\n' ) {
_this10 . editor . deleteText ( _this10 . getLength ( ) - 1 , 1 ) ;
applied . delete ( 1 ) ;
}
var ret = deleted . compose ( applied ) ;
return ret ;
} , source ) ;
}
} , {
key : 'setSelection' ,
value : function setSelection ( index , length , source ) {
if ( index == null ) {
this . selection . setRange ( null , length || Quill . sources . API ) ;
} else {
var _overload15 = overload ( index , length , source ) ;
var _overload16 = _slicedToArray ( _overload15 , 4 ) ;
index = _overload16 [ 0 ] ;
length = _overload16 [ 1 ] ;
source = _overload16 [ 3 ] ;
this . selection . setRange ( new _selection . Range ( index , length ) , source ) ;
if ( source !== _emitter4 . default . sources . SILENT ) {
this . selection . scrollIntoView ( this . scrollingContainer ) ;
}
}
}
} , {
key : 'setText' ,
value : function setText ( text ) {
var source = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : _emitter4 . default . sources . API ;
var delta = new _quillDelta2 . default ( ) . insert ( text ) ;
return this . setContents ( delta , source ) ;
}
} , {
key : 'update' ,
value : function update ( ) {
var source = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : _emitter4 . default . sources . USER ;
var change = this . scroll . update ( source ) ; // Will update selection before selection.update() does if text changes
this . selection . update ( source ) ;
return change ;
}
} , {
key : 'updateContents' ,
value : function updateContents ( delta ) {
var _this11 = this ;
var source = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : _emitter4 . default . sources . API ;
return modify . call ( this , function ( ) {
delta = new _quillDelta2 . default ( delta ) ;
return _this11 . editor . applyDelta ( delta , source ) ;
} , source , true ) ;
}
} ] ) ;
return Quill ;
} ( ) ;
Quill . DEFAULTS = {
bounds : null ,
formats : null ,
modules : { } ,
placeholder : '' ,
readOnly : false ,
scrollingContainer : null ,
strict : true ,
theme : 'default'
} ;
Quill . events = _emitter4 . default . events ;
Quill . sources = _emitter4 . default . sources ;
// eslint-disable-next-line no-undef
2020-10-21 17:34:56 +08:00
Quill . version = false ? 'dev' : "1.3.7" ;
2019-10-06 04:57:44 +08:00
Quill . imports = {
'delta' : _quillDelta2 . default ,
'parchment' : _parchment2 . default ,
'core/module' : _module2 . default ,
'core/theme' : _theme2 . default
} ;
function expandConfig ( container , userConfig ) {
userConfig = ( 0 , _extend2 . default ) ( true , {
container : container ,
modules : {
clipboard : true ,
keyboard : true ,
history : true
}
} , userConfig ) ;
if ( ! userConfig . theme || userConfig . theme === Quill . DEFAULTS . theme ) {
userConfig . theme = _theme2 . default ;
} else {
userConfig . theme = Quill . import ( 'themes/' + userConfig . theme ) ;
if ( userConfig . theme == null ) {
throw new Error ( 'Invalid theme ' + userConfig . theme + '. Did you register it?' ) ;
}
}
var themeConfig = ( 0 , _extend2 . default ) ( true , { } , userConfig . theme . DEFAULTS ) ;
[ themeConfig , userConfig ] . forEach ( function ( config ) {
config . modules = config . modules || { } ;
Object . keys ( config . modules ) . forEach ( function ( module ) {
if ( config . modules [ module ] === true ) {
config . modules [ module ] = { } ;
}
} ) ;
} ) ;
var moduleNames = Object . keys ( themeConfig . modules ) . concat ( Object . keys ( userConfig . modules ) ) ;
var moduleConfig = moduleNames . reduce ( function ( config , name ) {
var moduleClass = Quill . import ( 'modules/' + name ) ;
if ( moduleClass == null ) {
debug . error ( 'Cannot load ' + name + ' module. Are you sure you registered it?' ) ;
} else {
config [ name ] = moduleClass . DEFAULTS || { } ;
}
return config ;
} , { } ) ;
// Special case toolbar shorthand
if ( userConfig . modules != null && userConfig . modules . toolbar && userConfig . modules . toolbar . constructor !== Object ) {
userConfig . modules . toolbar = {
container : userConfig . modules . toolbar
} ;
}
userConfig = ( 0 , _extend2 . default ) ( true , { } , Quill . DEFAULTS , { modules : moduleConfig } , themeConfig , userConfig ) ;
[ 'bounds' , 'container' , 'scrollingContainer' ] . forEach ( function ( key ) {
if ( typeof userConfig [ key ] === 'string' ) {
userConfig [ key ] = document . querySelector ( userConfig [ key ] ) ;
}
} ) ;
userConfig . modules = Object . keys ( userConfig . modules ) . reduce ( function ( config , name ) {
if ( userConfig . modules [ name ] ) {
config [ name ] = userConfig . modules [ name ] ;
}
return config ;
} , { } ) ;
return userConfig ;
}
// Handle selection preservation and TEXT_CHANGE emission
// common to modification APIs
function modify ( modifier , source , index , shift ) {
if ( this . options . strict && ! this . isEnabled ( ) && source === _emitter4 . default . sources . USER ) {
return new _quillDelta2 . default ( ) ;
}
var range = index == null ? null : this . getSelection ( ) ;
var oldDelta = this . editor . delta ;
var change = modifier ( ) ;
if ( range != null ) {
if ( index === true ) index = range . index ;
if ( shift == null ) {
range = shiftRange ( range , change , source ) ;
} else if ( shift !== 0 ) {
range = shiftRange ( range , index , shift , source ) ;
}
this . setSelection ( range , _emitter4 . default . sources . SILENT ) ;
}
if ( change . length ( ) > 0 ) {
var _emitter ;
var args = [ _emitter4 . default . events . TEXT _CHANGE , change , oldDelta , source ] ;
( _emitter = this . emitter ) . emit . apply ( _emitter , [ _emitter4 . default . events . EDITOR _CHANGE ] . concat ( args ) ) ;
if ( source !== _emitter4 . default . sources . SILENT ) {
var _emitter2 ;
( _emitter2 = this . emitter ) . emit . apply ( _emitter2 , args ) ;
}
}
return change ;
}
function overload ( index , length , name , value , source ) {
var formats = { } ;
if ( typeof index . index === 'number' && typeof index . length === 'number' ) {
// Allow for throwaway end (used by insertText/insertEmbed)
if ( typeof length !== 'number' ) {
source = value , value = name , name = length , length = index . length , index = index . index ;
} else {
length = index . length , index = index . index ;
}
} else if ( typeof length !== 'number' ) {
source = value , value = name , name = length , length = 0 ;
}
// Handle format being object, two format name/value strings or excluded
if ( ( typeof name === 'undefined' ? 'undefined' : _typeof ( name ) ) === 'object' ) {
formats = name ;
source = value ;
} else if ( typeof name === 'string' ) {
if ( value != null ) {
formats [ name ] = value ;
} else {
source = name ;
}
}
// Handle optional source
source = source || _emitter4 . default . sources . API ;
return [ index , length , formats , source ] ;
}
function shiftRange ( range , index , length , source ) {
if ( range == null ) return null ;
var start = void 0 ,
end = void 0 ;
if ( index instanceof _quillDelta2 . default ) {
var _map = [ range . index , range . index + range . length ] . map ( function ( pos ) {
return index . transformPosition ( pos , source !== _emitter4 . default . sources . USER ) ;
} ) ;
var _map2 = _slicedToArray ( _map , 2 ) ;
start = _map2 [ 0 ] ;
end = _map2 [ 1 ] ;
} else {
var _map3 = [ range . index , range . index + range . length ] . map ( function ( pos ) {
if ( pos < index || pos === index && source === _emitter4 . default . sources . USER ) return pos ;
if ( length >= 0 ) {
return pos + length ;
} else {
return Math . max ( index , pos + length ) ;
}
} ) ;
var _map4 = _slicedToArray ( _map3 , 2 ) ;
start = _map4 [ 0 ] ;
end = _map4 [ 1 ] ;
}
return new _selection . Range ( start , end - start ) ;
}
exports . expandConfig = expandConfig ;
exports . overload = overload ;
exports . default = Quill ;
/***/ } ) ,
/* 6 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _text = _ _webpack _require _ _ ( 7 ) ;
var _text2 = _interopRequireDefault ( _text ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var Inline = function ( _Parchment$Inline ) {
_inherits ( Inline , _Parchment$Inline ) ;
function Inline ( ) {
_classCallCheck ( this , Inline ) ;
return _possibleConstructorReturn ( this , ( Inline . _ _proto _ _ || Object . getPrototypeOf ( Inline ) ) . apply ( this , arguments ) ) ;
}
_createClass ( Inline , [ {
key : 'formatAt' ,
value : function formatAt ( index , length , name , value ) {
if ( Inline . compare ( this . statics . blotName , name ) < 0 && _parchment2 . default . query ( name , _parchment2 . default . Scope . BLOT ) ) {
var blot = this . isolate ( index , length ) ;
if ( value ) {
blot . wrap ( name , value ) ;
}
} else {
_get ( Inline . prototype . _ _proto _ _ || Object . getPrototypeOf ( Inline . prototype ) , 'formatAt' , this ) . call ( this , index , length , name , value ) ;
}
}
} , {
key : 'optimize' ,
value : function optimize ( context ) {
_get ( Inline . prototype . _ _proto _ _ || Object . getPrototypeOf ( Inline . prototype ) , 'optimize' , this ) . call ( this , context ) ;
if ( this . parent instanceof Inline && Inline . compare ( this . statics . blotName , this . parent . statics . blotName ) > 0 ) {
var parent = this . parent . isolate ( this . offset ( ) , this . length ( ) ) ;
this . moveChildren ( parent ) ;
parent . wrap ( this ) ;
}
}
} ] , [ {
key : 'compare' ,
value : function compare ( self , other ) {
var selfIndex = Inline . order . indexOf ( self ) ;
var otherIndex = Inline . order . indexOf ( other ) ;
if ( selfIndex >= 0 || otherIndex >= 0 ) {
return selfIndex - otherIndex ;
} else if ( self === other ) {
return 0 ;
} else if ( self < other ) {
return - 1 ;
} else {
return 1 ;
}
}
} ] ) ;
return Inline ;
} ( _parchment2 . default . Inline ) ;
Inline . allowedChildren = [ Inline , _parchment2 . default . Embed , _text2 . default ] ;
// Lower index means deeper in the DOM tree, since not found (-1) is for embeds
Inline . order = [ 'cursor' , 'inline' , // Must be lower
'underline' , 'strike' , 'italic' , 'bold' , 'script' , 'link' , 'code' // Must be higher
] ;
exports . default = Inline ;
/***/ } ) ,
/* 7 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var TextBlot = function ( _Parchment$Text ) {
_inherits ( TextBlot , _Parchment$Text ) ;
function TextBlot ( ) {
_classCallCheck ( this , TextBlot ) ;
return _possibleConstructorReturn ( this , ( TextBlot . _ _proto _ _ || Object . getPrototypeOf ( TextBlot ) ) . apply ( this , arguments ) ) ;
}
return TextBlot ;
} ( _parchment2 . default . Text ) ;
exports . default = TextBlot ;
/***/ } ) ,
/* 8 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _eventemitter = _ _webpack _require _ _ ( 54 ) ;
var _eventemitter2 = _interopRequireDefault ( _eventemitter ) ;
var _logger = _ _webpack _require _ _ ( 10 ) ;
var _logger2 = _interopRequireDefault ( _logger ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var debug = ( 0 , _logger2 . default ) ( 'quill:events' ) ;
var EVENTS = [ 'selectionchange' , 'mousedown' , 'mouseup' , 'click' ] ;
EVENTS . forEach ( function ( eventName ) {
document . addEventListener ( eventName , function ( ) {
for ( var _len = arguments . length , args = Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) {
args [ _key ] = arguments [ _key ] ;
}
[ ] . slice . call ( document . querySelectorAll ( '.ql-container' ) ) . forEach ( function ( node ) {
// TODO use WeakMap
if ( node . _ _quill && node . _ _quill . emitter ) {
var _node$ _ _quill$emitter ;
( _node$ _ _quill$emitter = node . _ _quill . emitter ) . handleDOM . apply ( _node$ _ _quill$emitter , args ) ;
}
} ) ;
} ) ;
} ) ;
var Emitter = function ( _EventEmitter ) {
_inherits ( Emitter , _EventEmitter ) ;
function Emitter ( ) {
_classCallCheck ( this , Emitter ) ;
var _this = _possibleConstructorReturn ( this , ( Emitter . _ _proto _ _ || Object . getPrototypeOf ( Emitter ) ) . call ( this ) ) ;
_this . listeners = { } ;
_this . on ( 'error' , debug . error ) ;
return _this ;
}
_createClass ( Emitter , [ {
key : 'emit' ,
value : function emit ( ) {
debug . log . apply ( debug , arguments ) ;
_get ( Emitter . prototype . _ _proto _ _ || Object . getPrototypeOf ( Emitter . prototype ) , 'emit' , this ) . apply ( this , arguments ) ;
}
} , {
key : 'handleDOM' ,
value : function handleDOM ( event ) {
for ( var _len2 = arguments . length , args = Array ( _len2 > 1 ? _len2 - 1 : 0 ) , _key2 = 1 ; _key2 < _len2 ; _key2 ++ ) {
args [ _key2 - 1 ] = arguments [ _key2 ] ;
}
( this . listeners [ event . type ] || [ ] ) . forEach ( function ( _ref ) {
var node = _ref . node ,
handler = _ref . handler ;
if ( event . target === node || node . contains ( event . target ) ) {
handler . apply ( undefined , [ event ] . concat ( args ) ) ;
}
} ) ;
}
} , {
key : 'listenDOM' ,
value : function listenDOM ( eventName , node , handler ) {
if ( ! this . listeners [ eventName ] ) {
this . listeners [ eventName ] = [ ] ;
}
this . listeners [ eventName ] . push ( { node : node , handler : handler } ) ;
}
} ] ) ;
return Emitter ;
} ( _eventemitter2 . default ) ;
Emitter . events = {
EDITOR _CHANGE : 'editor-change' ,
SCROLL _BEFORE _UPDATE : 'scroll-before-update' ,
SCROLL _OPTIMIZE : 'scroll-optimize' ,
SCROLL _UPDATE : 'scroll-update' ,
SELECTION _CHANGE : 'selection-change' ,
TEXT _CHANGE : 'text-change'
} ;
Emitter . sources = {
API : 'api' ,
SILENT : 'silent' ,
USER : 'user'
} ;
exports . default = Emitter ;
/***/ } ) ,
/* 9 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var Module = function Module ( quill ) {
var options = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
_classCallCheck ( this , Module ) ;
this . quill = quill ;
this . options = options ;
} ;
Module . DEFAULTS = { } ;
exports . default = Module ;
/***/ } ) ,
/* 10 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var levels = [ 'error' , 'warn' , 'log' , 'info' ] ;
var level = 'warn' ;
function debug ( method ) {
if ( levels . indexOf ( method ) <= levels . indexOf ( level ) ) {
var _console ;
for ( var _len = arguments . length , args = Array ( _len > 1 ? _len - 1 : 0 ) , _key = 1 ; _key < _len ; _key ++ ) {
args [ _key - 1 ] = arguments [ _key ] ;
}
( _console = console ) [ method ] . apply ( _console , args ) ; // eslint-disable-line no-console
}
}
function namespace ( ns ) {
return levels . reduce ( function ( logger , method ) {
logger [ method ] = debug . bind ( console , method , ns ) ;
return logger ;
} , { } ) ;
}
debug . level = namespace . level = function ( newLevel ) {
level = newLevel ;
} ;
exports . default = namespace ;
/***/ } ) ,
/* 11 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
var pSlice = Array . prototype . slice ;
var objectKeys = _ _webpack _require _ _ ( 52 ) ;
var isArguments = _ _webpack _require _ _ ( 53 ) ;
var deepEqual = module . exports = function ( actual , expected , opts ) {
if ( ! opts ) opts = { } ;
// 7.1. All identical values are equivalent, as determined by ===.
if ( actual === expected ) {
return true ;
} else if ( actual instanceof Date && expected instanceof Date ) {
return actual . getTime ( ) === expected . getTime ( ) ;
// 7.3. Other pairs that do not both pass typeof value == 'object',
// equivalence is determined by ==.
} else if ( ! actual || ! expected || typeof actual != 'object' && typeof expected != 'object' ) {
return opts . strict ? actual === expected : actual == expected ;
// 7.4. For all other Object pairs, including Array objects, equivalence is
// determined by having the same number of owned properties (as verified
// with Object.prototype.hasOwnProperty.call), the same set of keys
// (although not necessarily the same order), equivalent values for every
// corresponding key, and an identical 'prototype' property. Note: this
// accounts for both named and indexed properties on Arrays.
} else {
return objEquiv ( actual , expected , opts ) ;
}
}
function isUndefinedOrNull ( value ) {
return value === null || value === undefined ;
}
function isBuffer ( x ) {
if ( ! x || typeof x !== 'object' || typeof x . length !== 'number' ) return false ;
if ( typeof x . copy !== 'function' || typeof x . slice !== 'function' ) {
return false ;
}
if ( x . length > 0 && typeof x [ 0 ] !== 'number' ) return false ;
return true ;
}
function objEquiv ( a , b , opts ) {
var i , key ;
if ( isUndefinedOrNull ( a ) || isUndefinedOrNull ( b ) )
return false ;
// an identical 'prototype' property.
if ( a . prototype !== b . prototype ) return false ;
//~~~I've managed to break Object.keys through screwy arguments passing.
// Converting to array solves the problem.
if ( isArguments ( a ) ) {
if ( ! isArguments ( b ) ) {
return false ;
}
a = pSlice . call ( a ) ;
b = pSlice . call ( b ) ;
return deepEqual ( a , b , opts ) ;
}
if ( isBuffer ( a ) ) {
if ( ! isBuffer ( b ) ) {
return false ;
}
if ( a . length !== b . length ) return false ;
for ( i = 0 ; i < a . length ; i ++ ) {
if ( a [ i ] !== b [ i ] ) return false ;
}
return true ;
}
try {
var ka = objectKeys ( a ) ,
kb = objectKeys ( b ) ;
} catch ( e ) { //happens when one is a string literal and the other isn't
return false ;
}
// having the same number of owned properties (keys incorporates
// hasOwnProperty)
if ( ka . length != kb . length )
return false ;
//the same set of keys (although not necessarily the same order),
ka . sort ( ) ;
kb . sort ( ) ;
//~~~cheap key test
for ( i = ka . length - 1 ; i >= 0 ; i -- ) {
if ( ka [ i ] != kb [ i ] )
return false ;
}
//equivalent values for every corresponding key, and
//~~~possibly expensive deep test
for ( i = ka . length - 1 ; i >= 0 ; i -- ) {
key = ka [ i ] ;
if ( ! deepEqual ( a [ key ] , b [ key ] , opts ) ) return false ;
}
return typeof a === typeof b ;
}
/***/ } ) ,
/* 12 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var Attributor = /** @class */ ( function ( ) {
function Attributor ( attrName , keyName , options ) {
if ( options === void 0 ) { options = { } ; }
this . attrName = attrName ;
this . keyName = keyName ;
var attributeBit = Registry . Scope . TYPE & Registry . Scope . ATTRIBUTE ;
if ( options . scope != null ) {
// Ignore type bits, force attribute bit
this . scope = ( options . scope & Registry . Scope . LEVEL ) | attributeBit ;
}
else {
this . scope = Registry . Scope . ATTRIBUTE ;
}
if ( options . whitelist != null )
this . whitelist = options . whitelist ;
}
Attributor . keys = function ( node ) {
return [ ] . map . call ( node . attributes , function ( item ) {
return item . name ;
} ) ;
} ;
Attributor . prototype . add = function ( node , value ) {
if ( ! this . canAdd ( node , value ) )
return false ;
node . setAttribute ( this . keyName , value ) ;
return true ;
} ;
Attributor . prototype . canAdd = function ( node , value ) {
var match = Registry . query ( node , Registry . Scope . BLOT & ( this . scope | Registry . Scope . TYPE ) ) ;
if ( match == null )
return false ;
if ( this . whitelist == null )
return true ;
if ( typeof value === 'string' ) {
return this . whitelist . indexOf ( value . replace ( /["']/g , '' ) ) > - 1 ;
}
else {
return this . whitelist . indexOf ( value ) > - 1 ;
}
} ;
Attributor . prototype . remove = function ( node ) {
node . removeAttribute ( this . keyName ) ;
} ;
Attributor . prototype . value = function ( node ) {
var value = node . getAttribute ( this . keyName ) ;
if ( this . canAdd ( node , value ) && value ) {
return value ;
}
return '' ;
} ;
return Attributor ;
} ( ) ) ;
exports . default = Attributor ;
/***/ } ) ,
/* 13 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = exports . Code = undefined ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _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" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _quillDelta = _ _webpack _require _ _ ( 2 ) ;
var _quillDelta2 = _interopRequireDefault ( _quillDelta ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _block = _ _webpack _require _ _ ( 4 ) ;
var _block2 = _interopRequireDefault ( _block ) ;
var _inline = _ _webpack _require _ _ ( 6 ) ;
var _inline2 = _interopRequireDefault ( _inline ) ;
var _text = _ _webpack _require _ _ ( 7 ) ;
var _text2 = _interopRequireDefault ( _text ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var Code = function ( _Inline ) {
_inherits ( Code , _Inline ) ;
function Code ( ) {
_classCallCheck ( this , Code ) ;
return _possibleConstructorReturn ( this , ( Code . _ _proto _ _ || Object . getPrototypeOf ( Code ) ) . apply ( this , arguments ) ) ;
}
return Code ;
} ( _inline2 . default ) ;
Code . blotName = 'code' ;
Code . tagName = 'CODE' ;
var CodeBlock = function ( _Block ) {
_inherits ( CodeBlock , _Block ) ;
function CodeBlock ( ) {
_classCallCheck ( this , CodeBlock ) ;
return _possibleConstructorReturn ( this , ( CodeBlock . _ _proto _ _ || Object . getPrototypeOf ( CodeBlock ) ) . apply ( this , arguments ) ) ;
}
_createClass ( CodeBlock , [ {
key : 'delta' ,
value : function delta ( ) {
var _this3 = this ;
var text = this . domNode . textContent ;
if ( text . endsWith ( '\n' ) ) {
// Should always be true
text = text . slice ( 0 , - 1 ) ;
}
return text . split ( '\n' ) . reduce ( function ( delta , frag ) {
return delta . insert ( frag ) . insert ( '\n' , _this3 . formats ( ) ) ;
} , new _quillDelta2 . default ( ) ) ;
}
} , {
key : 'format' ,
value : function format ( name , value ) {
if ( name === this . statics . blotName && value ) return ;
var _descendant = this . descendant ( _text2 . default , this . length ( ) - 1 ) ,
_descendant2 = _slicedToArray ( _descendant , 1 ) ,
text = _descendant2 [ 0 ] ;
if ( text != null ) {
text . deleteAt ( text . length ( ) - 1 , 1 ) ;
}
_get ( CodeBlock . prototype . _ _proto _ _ || Object . getPrototypeOf ( CodeBlock . prototype ) , 'format' , this ) . call ( this , name , value ) ;
}
} , {
key : 'formatAt' ,
value : function formatAt ( index , length , name , value ) {
if ( length === 0 ) return ;
if ( _parchment2 . default . query ( name , _parchment2 . default . Scope . BLOCK ) == null || name === this . statics . blotName && value === this . statics . formats ( this . domNode ) ) {
return ;
}
var nextNewline = this . newlineIndex ( index ) ;
if ( nextNewline < 0 || nextNewline >= index + length ) return ;
var prevNewline = this . newlineIndex ( index , true ) + 1 ;
var isolateLength = nextNewline - prevNewline + 1 ;
var blot = this . isolate ( prevNewline , isolateLength ) ;
var next = blot . next ;
blot . format ( name , value ) ;
if ( next instanceof CodeBlock ) {
next . formatAt ( 0 , index - prevNewline + length - isolateLength , name , value ) ;
}
}
} , {
key : 'insertAt' ,
value : function insertAt ( index , value , def ) {
if ( def != null ) return ;
var _descendant3 = this . descendant ( _text2 . default , index ) ,
_descendant4 = _slicedToArray ( _descendant3 , 2 ) ,
text = _descendant4 [ 0 ] ,
offset = _descendant4 [ 1 ] ;
text . insertAt ( offset , value ) ;
}
} , {
key : 'length' ,
value : function length ( ) {
var length = this . domNode . textContent . length ;
if ( ! this . domNode . textContent . endsWith ( '\n' ) ) {
return length + 1 ;
}
return length ;
}
} , {
key : 'newlineIndex' ,
value : function newlineIndex ( searchIndex ) {
var reverse = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : false ;
if ( ! reverse ) {
var offset = this . domNode . textContent . slice ( searchIndex ) . indexOf ( '\n' ) ;
return offset > - 1 ? searchIndex + offset : - 1 ;
} else {
return this . domNode . textContent . slice ( 0 , searchIndex ) . lastIndexOf ( '\n' ) ;
}
}
} , {
key : 'optimize' ,
value : function optimize ( context ) {
if ( ! this . domNode . textContent . endsWith ( '\n' ) ) {
this . appendChild ( _parchment2 . default . create ( 'text' , '\n' ) ) ;
}
_get ( CodeBlock . prototype . _ _proto _ _ || Object . getPrototypeOf ( CodeBlock . prototype ) , 'optimize' , this ) . call ( this , context ) ;
var next = this . next ;
if ( next != null && next . prev === this && next . statics . blotName === this . statics . blotName && this . statics . formats ( this . domNode ) === next . statics . formats ( next . domNode ) ) {
next . optimize ( context ) ;
next . moveChildren ( this ) ;
next . remove ( ) ;
}
}
} , {
key : 'replace' ,
value : function replace ( target ) {
_get ( CodeBlock . prototype . _ _proto _ _ || Object . getPrototypeOf ( CodeBlock . prototype ) , 'replace' , this ) . call ( this , target ) ;
[ ] . slice . call ( this . domNode . querySelectorAll ( '*' ) ) . forEach ( function ( node ) {
var blot = _parchment2 . default . find ( node ) ;
if ( blot == null ) {
node . parentNode . removeChild ( node ) ;
} else if ( blot instanceof _parchment2 . default . Embed ) {
blot . remove ( ) ;
} else {
blot . unwrap ( ) ;
}
} ) ;
}
} ] , [ {
key : 'create' ,
value : function create ( value ) {
var domNode = _get ( CodeBlock . _ _proto _ _ || Object . getPrototypeOf ( CodeBlock ) , 'create' , this ) . call ( this , value ) ;
domNode . setAttribute ( 'spellcheck' , false ) ;
return domNode ;
}
} , {
key : 'formats' ,
value : function formats ( ) {
return true ;
}
} ] ) ;
return CodeBlock ;
} ( _block2 . default ) ;
CodeBlock . blotName = 'code-block' ;
CodeBlock . tagName = 'PRE' ;
CodeBlock . TAB = ' ' ;
exports . Code = Code ;
exports . default = CodeBlock ;
/***/ } ) ,
/* 14 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _typeof = typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ? function ( obj ) { return typeof obj ; } : function ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _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" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _quillDelta = _ _webpack _require _ _ ( 2 ) ;
var _quillDelta2 = _interopRequireDefault ( _quillDelta ) ;
var _op = _ _webpack _require _ _ ( 20 ) ;
var _op2 = _interopRequireDefault ( _op ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _code = _ _webpack _require _ _ ( 13 ) ;
var _code2 = _interopRequireDefault ( _code ) ;
var _cursor = _ _webpack _require _ _ ( 24 ) ;
var _cursor2 = _interopRequireDefault ( _cursor ) ;
var _block = _ _webpack _require _ _ ( 4 ) ;
var _block2 = _interopRequireDefault ( _block ) ;
var _break = _ _webpack _require _ _ ( 16 ) ;
var _break2 = _interopRequireDefault ( _break ) ;
var _clone = _ _webpack _require _ _ ( 21 ) ;
var _clone2 = _interopRequireDefault ( _clone ) ;
var _deepEqual = _ _webpack _require _ _ ( 11 ) ;
var _deepEqual2 = _interopRequireDefault ( _deepEqual ) ;
var _extend = _ _webpack _require _ _ ( 3 ) ;
var _extend2 = _interopRequireDefault ( _extend ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _defineProperty ( obj , key , value ) { if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var ASCII = /^[ -~]*$/ ;
var Editor = function ( ) {
function Editor ( scroll ) {
_classCallCheck ( this , Editor ) ;
this . scroll = scroll ;
this . delta = this . getDelta ( ) ;
}
_createClass ( Editor , [ {
key : 'applyDelta' ,
value : function applyDelta ( delta ) {
var _this = this ;
var consumeNextNewline = false ;
this . scroll . update ( ) ;
var scrollLength = this . scroll . length ( ) ;
this . scroll . batchStart ( ) ;
delta = normalizeDelta ( delta ) ;
delta . reduce ( function ( index , op ) {
var length = op . retain || op . delete || op . insert . length || 1 ;
var attributes = op . attributes || { } ;
if ( op . insert != null ) {
if ( typeof op . insert === 'string' ) {
var text = op . insert ;
if ( text . endsWith ( '\n' ) && consumeNextNewline ) {
consumeNextNewline = false ;
text = text . slice ( 0 , - 1 ) ;
}
if ( index >= scrollLength && ! text . endsWith ( '\n' ) ) {
consumeNextNewline = true ;
}
_this . scroll . insertAt ( index , text ) ;
var _scroll$line = _this . scroll . line ( index ) ,
_scroll$line2 = _slicedToArray ( _scroll$line , 2 ) ,
line = _scroll$line2 [ 0 ] ,
offset = _scroll$line2 [ 1 ] ;
var formats = ( 0 , _extend2 . default ) ( { } , ( 0 , _block . bubbleFormats ) ( line ) ) ;
if ( line instanceof _block2 . default ) {
var _line$descendant = line . descendant ( _parchment2 . default . Leaf , offset ) ,
_line$descendant2 = _slicedToArray ( _line$descendant , 1 ) ,
leaf = _line$descendant2 [ 0 ] ;
formats = ( 0 , _extend2 . default ) ( formats , ( 0 , _block . bubbleFormats ) ( leaf ) ) ;
}
attributes = _op2 . default . attributes . diff ( formats , attributes ) || { } ;
} else if ( _typeof ( op . insert ) === 'object' ) {
var key = Object . keys ( op . insert ) [ 0 ] ; // There should only be one key
if ( key == null ) return index ;
_this . scroll . insertAt ( index , key , op . insert [ key ] ) ;
}
scrollLength += length ;
}
Object . keys ( attributes ) . forEach ( function ( name ) {
_this . scroll . formatAt ( index , length , name , attributes [ name ] ) ;
} ) ;
return index + length ;
} , 0 ) ;
delta . reduce ( function ( index , op ) {
if ( typeof op . delete === 'number' ) {
_this . scroll . deleteAt ( index , op . delete ) ;
return index ;
}
return index + ( op . retain || op . insert . length || 1 ) ;
} , 0 ) ;
this . scroll . batchEnd ( ) ;
return this . update ( delta ) ;
}
} , {
key : 'deleteText' ,
value : function deleteText ( index , length ) {
this . scroll . deleteAt ( index , length ) ;
return this . update ( new _quillDelta2 . default ( ) . retain ( index ) . delete ( length ) ) ;
}
} , {
key : 'formatLine' ,
value : function formatLine ( index , length ) {
var _this2 = this ;
var formats = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : { } ;
this . scroll . update ( ) ;
Object . keys ( formats ) . forEach ( function ( format ) {
if ( _this2 . scroll . whitelist != null && ! _this2 . scroll . whitelist [ format ] ) return ;
var lines = _this2 . scroll . lines ( index , Math . max ( length , 1 ) ) ;
var lengthRemaining = length ;
lines . forEach ( function ( line ) {
var lineLength = line . length ( ) ;
if ( ! ( line instanceof _code2 . default ) ) {
line . format ( format , formats [ format ] ) ;
} else {
var codeIndex = index - line . offset ( _this2 . scroll ) ;
var codeLength = line . newlineIndex ( codeIndex + lengthRemaining ) - codeIndex + 1 ;
line . formatAt ( codeIndex , codeLength , format , formats [ format ] ) ;
}
lengthRemaining -= lineLength ;
} ) ;
} ) ;
this . scroll . optimize ( ) ;
return this . update ( new _quillDelta2 . default ( ) . retain ( index ) . retain ( length , ( 0 , _clone2 . default ) ( formats ) ) ) ;
}
} , {
key : 'formatText' ,
value : function formatText ( index , length ) {
var _this3 = this ;
var formats = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : { } ;
Object . keys ( formats ) . forEach ( function ( format ) {
_this3 . scroll . formatAt ( index , length , format , formats [ format ] ) ;
} ) ;
return this . update ( new _quillDelta2 . default ( ) . retain ( index ) . retain ( length , ( 0 , _clone2 . default ) ( formats ) ) ) ;
}
} , {
key : 'getContents' ,
value : function getContents ( index , length ) {
return this . delta . slice ( index , index + length ) ;
}
} , {
key : 'getDelta' ,
value : function getDelta ( ) {
return this . scroll . lines ( ) . reduce ( function ( delta , line ) {
return delta . concat ( line . delta ( ) ) ;
} , new _quillDelta2 . default ( ) ) ;
}
} , {
key : 'getFormat' ,
value : function getFormat ( index ) {
var length = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 0 ;
var lines = [ ] ,
leaves = [ ] ;
if ( length === 0 ) {
this . scroll . path ( index ) . forEach ( function ( path ) {
var _path = _slicedToArray ( path , 1 ) ,
blot = _path [ 0 ] ;
if ( blot instanceof _block2 . default ) {
lines . push ( blot ) ;
} else if ( blot instanceof _parchment2 . default . Leaf ) {
leaves . push ( blot ) ;
}
} ) ;
} else {
lines = this . scroll . lines ( index , length ) ;
leaves = this . scroll . descendants ( _parchment2 . default . Leaf , index , length ) ;
}
var formatsArr = [ lines , leaves ] . map ( function ( blots ) {
if ( blots . length === 0 ) return { } ;
var formats = ( 0 , _block . bubbleFormats ) ( blots . shift ( ) ) ;
while ( Object . keys ( formats ) . length > 0 ) {
var blot = blots . shift ( ) ;
if ( blot == null ) return formats ;
formats = combineFormats ( ( 0 , _block . bubbleFormats ) ( blot ) , formats ) ;
}
return formats ;
} ) ;
return _extend2 . default . apply ( _extend2 . default , formatsArr ) ;
}
} , {
key : 'getText' ,
value : function getText ( index , length ) {
return this . getContents ( index , length ) . filter ( function ( op ) {
return typeof op . insert === 'string' ;
} ) . map ( function ( op ) {
return op . insert ;
} ) . join ( '' ) ;
}
} , {
key : 'insertEmbed' ,
value : function insertEmbed ( index , embed , value ) {
this . scroll . insertAt ( index , embed , value ) ;
return this . update ( new _quillDelta2 . default ( ) . retain ( index ) . insert ( _defineProperty ( { } , embed , value ) ) ) ;
}
} , {
key : 'insertText' ,
value : function insertText ( index , text ) {
var _this4 = this ;
var formats = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : { } ;
text = text . replace ( /\r\n/g , '\n' ) . replace ( /\r/g , '\n' ) ;
this . scroll . insertAt ( index , text ) ;
Object . keys ( formats ) . forEach ( function ( format ) {
_this4 . scroll . formatAt ( index , text . length , format , formats [ format ] ) ;
} ) ;
return this . update ( new _quillDelta2 . default ( ) . retain ( index ) . insert ( text , ( 0 , _clone2 . default ) ( formats ) ) ) ;
}
} , {
key : 'isBlank' ,
value : function isBlank ( ) {
if ( this . scroll . children . length == 0 ) return true ;
if ( this . scroll . children . length > 1 ) return false ;
var block = this . scroll . children . head ;
if ( block . statics . blotName !== _block2 . default . blotName ) return false ;
if ( block . children . length > 1 ) return false ;
return block . children . head instanceof _break2 . default ;
}
} , {
key : 'removeFormat' ,
value : function removeFormat ( index , length ) {
var text = this . getText ( index , length ) ;
var _scroll$line3 = this . scroll . line ( index + length ) ,
_scroll$line4 = _slicedToArray ( _scroll$line3 , 2 ) ,
line = _scroll$line4 [ 0 ] ,
offset = _scroll$line4 [ 1 ] ;
var suffixLength = 0 ,
suffix = new _quillDelta2 . default ( ) ;
if ( line != null ) {
if ( ! ( line instanceof _code2 . default ) ) {
suffixLength = line . length ( ) - offset ;
} else {
suffixLength = line . newlineIndex ( offset ) - offset + 1 ;
}
suffix = line . delta ( ) . slice ( offset , offset + suffixLength - 1 ) . insert ( '\n' ) ;
}
var contents = this . getContents ( index , length + suffixLength ) ;
var diff = contents . diff ( new _quillDelta2 . default ( ) . insert ( text ) . concat ( suffix ) ) ;
var delta = new _quillDelta2 . default ( ) . retain ( index ) . concat ( diff ) ;
return this . applyDelta ( delta ) ;
}
} , {
key : 'update' ,
value : function update ( change ) {
var mutations = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : [ ] ;
var cursorIndex = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : undefined ;
var oldDelta = this . delta ;
if ( mutations . length === 1 && mutations [ 0 ] . type === 'characterData' && mutations [ 0 ] . target . data . match ( ASCII ) && _parchment2 . default . find ( mutations [ 0 ] . target ) ) {
// Optimization for character changes
var textBlot = _parchment2 . default . find ( mutations [ 0 ] . target ) ;
var formats = ( 0 , _block . bubbleFormats ) ( textBlot ) ;
var index = textBlot . offset ( this . scroll ) ;
var oldValue = mutations [ 0 ] . oldValue . replace ( _cursor2 . default . CONTENTS , '' ) ;
var oldText = new _quillDelta2 . default ( ) . insert ( oldValue ) ;
var newText = new _quillDelta2 . default ( ) . insert ( textBlot . value ( ) ) ;
var diffDelta = new _quillDelta2 . default ( ) . retain ( index ) . concat ( oldText . diff ( newText , cursorIndex ) ) ;
change = diffDelta . reduce ( function ( delta , op ) {
if ( op . insert ) {
return delta . insert ( op . insert , formats ) ;
} else {
return delta . push ( op ) ;
}
} , new _quillDelta2 . default ( ) ) ;
this . delta = oldDelta . compose ( change ) ;
} else {
this . delta = this . getDelta ( ) ;
if ( ! change || ! ( 0 , _deepEqual2 . default ) ( oldDelta . compose ( change ) , this . delta ) ) {
change = oldDelta . diff ( this . delta , cursorIndex ) ;
}
}
return change ;
}
} ] ) ;
return Editor ;
} ( ) ;
function combineFormats ( formats , combined ) {
return Object . keys ( combined ) . reduce ( function ( merged , name ) {
if ( formats [ name ] == null ) return merged ;
if ( combined [ name ] === formats [ name ] ) {
merged [ name ] = combined [ name ] ;
} else if ( Array . isArray ( combined [ name ] ) ) {
if ( combined [ name ] . indexOf ( formats [ name ] ) < 0 ) {
merged [ name ] = combined [ name ] . concat ( [ formats [ name ] ] ) ;
}
} else {
merged [ name ] = [ combined [ name ] , formats [ name ] ] ;
}
return merged ;
} , { } ) ;
}
function normalizeDelta ( delta ) {
return delta . reduce ( function ( delta , op ) {
if ( op . insert === 1 ) {
var attributes = ( 0 , _clone2 . default ) ( op . attributes ) ;
delete attributes [ 'image' ] ;
return delta . insert ( { image : op . attributes . image } , attributes ) ;
}
if ( op . attributes != null && ( op . attributes . list === true || op . attributes . bullet === true ) ) {
op = ( 0 , _clone2 . default ) ( op ) ;
if ( op . attributes . list ) {
op . attributes . list = 'ordered' ;
} else {
op . attributes . list = 'bullet' ;
delete op . attributes . bullet ;
}
}
if ( typeof op . insert === 'string' ) {
var text = op . insert . replace ( /\r\n/g , '\n' ) . replace ( /\r/g , '\n' ) ;
return delta . insert ( text , op . attributes ) ;
}
return delta . push ( op ) ;
} , new _quillDelta2 . default ( ) ) ;
}
exports . default = Editor ;
/***/ } ) ,
/* 15 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = exports . Range = undefined ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _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" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _clone = _ _webpack _require _ _ ( 21 ) ;
var _clone2 = _interopRequireDefault ( _clone ) ;
var _deepEqual = _ _webpack _require _ _ ( 11 ) ;
var _deepEqual2 = _interopRequireDefault ( _deepEqual ) ;
var _emitter3 = _ _webpack _require _ _ ( 8 ) ;
var _emitter4 = _interopRequireDefault ( _emitter3 ) ;
var _logger = _ _webpack _require _ _ ( 10 ) ;
var _logger2 = _interopRequireDefault ( _logger ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _toConsumableArray ( arr ) { if ( Array . isArray ( arr ) ) { for ( var i = 0 , arr2 = Array ( arr . length ) ; i < arr . length ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; } else { return Array . from ( arr ) ; } }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var debug = ( 0 , _logger2 . default ) ( 'quill:selection' ) ;
var Range = function Range ( index ) {
var length = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 0 ;
_classCallCheck ( this , Range ) ;
this . index = index ;
this . length = length ;
} ;
var Selection = function ( ) {
function Selection ( scroll , emitter ) {
var _this = this ;
_classCallCheck ( this , Selection ) ;
this . emitter = emitter ;
this . scroll = scroll ;
this . composing = false ;
this . mouseDown = false ;
this . root = this . scroll . domNode ;
this . cursor = _parchment2 . default . create ( 'cursor' , this ) ;
// savedRange is last non-null range
this . lastRange = this . savedRange = new Range ( 0 , 0 ) ;
this . handleComposition ( ) ;
this . handleDragging ( ) ;
this . emitter . listenDOM ( 'selectionchange' , document , function ( ) {
if ( ! _this . mouseDown ) {
setTimeout ( _this . update . bind ( _this , _emitter4 . default . sources . USER ) , 1 ) ;
}
} ) ;
this . emitter . on ( _emitter4 . default . events . EDITOR _CHANGE , function ( type , delta ) {
if ( type === _emitter4 . default . events . TEXT _CHANGE && delta . length ( ) > 0 ) {
_this . update ( _emitter4 . default . sources . SILENT ) ;
}
} ) ;
this . emitter . on ( _emitter4 . default . events . SCROLL _BEFORE _UPDATE , function ( ) {
if ( ! _this . hasFocus ( ) ) return ;
var native = _this . getNativeRange ( ) ;
if ( native == null ) return ;
if ( native . start . node === _this . cursor . textNode ) return ; // cursor.restore() will handle
// TODO unclear if this has negative side effects
_this . emitter . once ( _emitter4 . default . events . SCROLL _UPDATE , function ( ) {
try {
_this . setNativeRange ( native . start . node , native . start . offset , native . end . node , native . end . offset ) ;
} catch ( ignored ) { }
} ) ;
} ) ;
this . emitter . on ( _emitter4 . default . events . SCROLL _OPTIMIZE , function ( mutations , context ) {
if ( context . range ) {
var _context$range = context . range ,
startNode = _context$range . startNode ,
startOffset = _context$range . startOffset ,
endNode = _context$range . endNode ,
endOffset = _context$range . endOffset ;
_this . setNativeRange ( startNode , startOffset , endNode , endOffset ) ;
}
} ) ;
this . update ( _emitter4 . default . sources . SILENT ) ;
}
_createClass ( Selection , [ {
key : 'handleComposition' ,
value : function handleComposition ( ) {
var _this2 = this ;
this . root . addEventListener ( 'compositionstart' , function ( ) {
_this2 . composing = true ;
} ) ;
this . root . addEventListener ( 'compositionend' , function ( ) {
_this2 . composing = false ;
if ( _this2 . cursor . parent ) {
var range = _this2 . cursor . restore ( ) ;
if ( ! range ) return ;
setTimeout ( function ( ) {
_this2 . setNativeRange ( range . startNode , range . startOffset , range . endNode , range . endOffset ) ;
} , 1 ) ;
}
} ) ;
}
} , {
key : 'handleDragging' ,
value : function handleDragging ( ) {
var _this3 = this ;
this . emitter . listenDOM ( 'mousedown' , document . body , function ( ) {
_this3 . mouseDown = true ;
} ) ;
this . emitter . listenDOM ( 'mouseup' , document . body , function ( ) {
_this3 . mouseDown = false ;
_this3 . update ( _emitter4 . default . sources . USER ) ;
} ) ;
}
} , {
key : 'focus' ,
value : function focus ( ) {
if ( this . hasFocus ( ) ) return ;
this . root . focus ( ) ;
this . setRange ( this . savedRange ) ;
}
} , {
key : 'format' ,
value : function format ( _format , value ) {
if ( this . scroll . whitelist != null && ! this . scroll . whitelist [ _format ] ) return ;
this . scroll . update ( ) ;
var nativeRange = this . getNativeRange ( ) ;
if ( nativeRange == null || ! nativeRange . native . collapsed || _parchment2 . default . query ( _format , _parchment2 . default . Scope . BLOCK ) ) return ;
if ( nativeRange . start . node !== this . cursor . textNode ) {
var blot = _parchment2 . default . find ( nativeRange . start . node , false ) ;
if ( blot == null ) return ;
// TODO Give blot ability to not split
if ( blot instanceof _parchment2 . default . Leaf ) {
var after = blot . split ( nativeRange . start . offset ) ;
blot . parent . insertBefore ( this . cursor , after ) ;
} else {
blot . insertBefore ( this . cursor , nativeRange . start . node ) ; // Should never happen
}
this . cursor . attach ( ) ;
}
this . cursor . format ( _format , value ) ;
this . scroll . optimize ( ) ;
this . setNativeRange ( this . cursor . textNode , this . cursor . textNode . data . length ) ;
this . update ( ) ;
}
} , {
key : 'getBounds' ,
value : function getBounds ( index ) {
var length = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 0 ;
var scrollLength = this . scroll . length ( ) ;
index = Math . min ( index , scrollLength - 1 ) ;
length = Math . min ( index + length , scrollLength - 1 ) - index ;
var node = void 0 ,
_scroll$leaf = this . scroll . leaf ( index ) ,
_scroll$leaf2 = _slicedToArray ( _scroll$leaf , 2 ) ,
leaf = _scroll$leaf2 [ 0 ] ,
offset = _scroll$leaf2 [ 1 ] ;
if ( leaf == null ) return null ;
var _leaf$position = leaf . position ( offset , true ) ;
var _leaf$position2 = _slicedToArray ( _leaf$position , 2 ) ;
node = _leaf$position2 [ 0 ] ;
offset = _leaf$position2 [ 1 ] ;
var range = document . createRange ( ) ;
if ( length > 0 ) {
range . setStart ( node , offset ) ;
var _scroll$leaf3 = this . scroll . leaf ( index + length ) ;
var _scroll$leaf4 = _slicedToArray ( _scroll$leaf3 , 2 ) ;
leaf = _scroll$leaf4 [ 0 ] ;
offset = _scroll$leaf4 [ 1 ] ;
if ( leaf == null ) return null ;
var _leaf$position3 = leaf . position ( offset , true ) ;
var _leaf$position4 = _slicedToArray ( _leaf$position3 , 2 ) ;
node = _leaf$position4 [ 0 ] ;
offset = _leaf$position4 [ 1 ] ;
range . setEnd ( node , offset ) ;
return range . getBoundingClientRect ( ) ;
} else {
var side = 'left' ;
var rect = void 0 ;
if ( node instanceof Text ) {
if ( offset < node . data . length ) {
range . setStart ( node , offset ) ;
range . setEnd ( node , offset + 1 ) ;
} else {
range . setStart ( node , offset - 1 ) ;
range . setEnd ( node , offset ) ;
side = 'right' ;
}
rect = range . getBoundingClientRect ( ) ;
} else {
rect = leaf . domNode . getBoundingClientRect ( ) ;
if ( offset > 0 ) side = 'right' ;
}
return {
bottom : rect . top + rect . height ,
height : rect . height ,
left : rect [ side ] ,
right : rect [ side ] ,
top : rect . top ,
width : 0
} ;
}
}
} , {
key : 'getNativeRange' ,
value : function getNativeRange ( ) {
var selection = document . getSelection ( ) ;
if ( selection == null || selection . rangeCount <= 0 ) return null ;
var nativeRange = selection . getRangeAt ( 0 ) ;
if ( nativeRange == null ) return null ;
var range = this . normalizeNative ( nativeRange ) ;
debug . info ( 'getNativeRange' , range ) ;
return range ;
}
} , {
key : 'getRange' ,
value : function getRange ( ) {
var normalized = this . getNativeRange ( ) ;
if ( normalized == null ) return [ null , null ] ;
var range = this . normalizedToRange ( normalized ) ;
return [ range , normalized ] ;
}
} , {
key : 'hasFocus' ,
value : function hasFocus ( ) {
return document . activeElement === this . root ;
}
} , {
key : 'normalizedToRange' ,
value : function normalizedToRange ( range ) {
var _this4 = this ;
var positions = [ [ range . start . node , range . start . offset ] ] ;
if ( ! range . native . collapsed ) {
positions . push ( [ range . end . node , range . end . offset ] ) ;
}
var indexes = positions . map ( function ( position ) {
var _position = _slicedToArray ( position , 2 ) ,
node = _position [ 0 ] ,
offset = _position [ 1 ] ;
var blot = _parchment2 . default . find ( node , true ) ;
var index = blot . offset ( _this4 . scroll ) ;
if ( offset === 0 ) {
return index ;
} else if ( blot instanceof _parchment2 . default . Container ) {
return index + blot . length ( ) ;
} else {
return index + blot . index ( node , offset ) ;
}
} ) ;
var end = Math . min ( Math . max . apply ( Math , _toConsumableArray ( indexes ) ) , this . scroll . length ( ) - 1 ) ;
var start = Math . min . apply ( Math , [ end ] . concat ( _toConsumableArray ( indexes ) ) ) ;
return new Range ( start , end - start ) ;
}
} , {
key : 'normalizeNative' ,
value : function normalizeNative ( nativeRange ) {
if ( ! contains ( this . root , nativeRange . startContainer ) || ! nativeRange . collapsed && ! contains ( this . root , nativeRange . endContainer ) ) {
return null ;
}
var range = {
start : { node : nativeRange . startContainer , offset : nativeRange . startOffset } ,
end : { node : nativeRange . endContainer , offset : nativeRange . endOffset } ,
native : nativeRange
} ;
[ range . start , range . end ] . forEach ( function ( position ) {
var node = position . node ,
offset = position . offset ;
while ( ! ( node instanceof Text ) && node . childNodes . length > 0 ) {
if ( node . childNodes . length > offset ) {
node = node . childNodes [ offset ] ;
offset = 0 ;
} else if ( node . childNodes . length === offset ) {
node = node . lastChild ;
offset = node instanceof Text ? node . data . length : node . childNodes . length + 1 ;
} else {
break ;
}
}
position . node = node , position . offset = offset ;
} ) ;
return range ;
}
} , {
key : 'rangeToNative' ,
value : function rangeToNative ( range ) {
var _this5 = this ;
var indexes = range . collapsed ? [ range . index ] : [ range . index , range . index + range . length ] ;
var args = [ ] ;
var scrollLength = this . scroll . length ( ) ;
indexes . forEach ( function ( index , i ) {
index = Math . min ( scrollLength - 1 , index ) ;
var node = void 0 ,
_scroll$leaf5 = _this5 . scroll . leaf ( index ) ,
_scroll$leaf6 = _slicedToArray ( _scroll$leaf5 , 2 ) ,
leaf = _scroll$leaf6 [ 0 ] ,
offset = _scroll$leaf6 [ 1 ] ;
var _leaf$position5 = leaf . position ( offset , i !== 0 ) ;
var _leaf$position6 = _slicedToArray ( _leaf$position5 , 2 ) ;
node = _leaf$position6 [ 0 ] ;
offset = _leaf$position6 [ 1 ] ;
args . push ( node , offset ) ;
} ) ;
if ( args . length < 2 ) {
args = args . concat ( args ) ;
}
return args ;
}
} , {
key : 'scrollIntoView' ,
value : function scrollIntoView ( scrollingContainer ) {
var range = this . lastRange ;
if ( range == null ) return ;
var bounds = this . getBounds ( range . index , range . length ) ;
if ( bounds == null ) return ;
var limit = this . scroll . length ( ) - 1 ;
var _scroll$line = this . scroll . line ( Math . min ( range . index , limit ) ) ,
_scroll$line2 = _slicedToArray ( _scroll$line , 1 ) ,
first = _scroll$line2 [ 0 ] ;
var last = first ;
if ( range . length > 0 ) {
var _scroll$line3 = this . scroll . line ( Math . min ( range . index + range . length , limit ) ) ;
var _scroll$line4 = _slicedToArray ( _scroll$line3 , 1 ) ;
last = _scroll$line4 [ 0 ] ;
}
if ( first == null || last == null ) return ;
var scrollBounds = scrollingContainer . getBoundingClientRect ( ) ;
if ( bounds . top < scrollBounds . top ) {
scrollingContainer . scrollTop -= scrollBounds . top - bounds . top ;
} else if ( bounds . bottom > scrollBounds . bottom ) {
scrollingContainer . scrollTop += bounds . bottom - scrollBounds . bottom ;
}
}
} , {
key : 'setNativeRange' ,
value : function setNativeRange ( startNode , startOffset ) {
var endNode = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : startNode ;
var endOffset = arguments . length > 3 && arguments [ 3 ] !== undefined ? arguments [ 3 ] : startOffset ;
var force = arguments . length > 4 && arguments [ 4 ] !== undefined ? arguments [ 4 ] : false ;
debug . info ( 'setNativeRange' , startNode , startOffset , endNode , endOffset ) ;
if ( startNode != null && ( this . root . parentNode == null || startNode . parentNode == null || endNode . parentNode == null ) ) {
return ;
}
var selection = document . getSelection ( ) ;
if ( selection == null ) return ;
if ( startNode != null ) {
if ( ! this . hasFocus ( ) ) this . root . focus ( ) ;
var native = ( this . getNativeRange ( ) || { } ) . native ;
if ( native == null || force || startNode !== native . startContainer || startOffset !== native . startOffset || endNode !== native . endContainer || endOffset !== native . endOffset ) {
if ( startNode . tagName == "BR" ) {
startOffset = [ ] . indexOf . call ( startNode . parentNode . childNodes , startNode ) ;
startNode = startNode . parentNode ;
}
if ( endNode . tagName == "BR" ) {
endOffset = [ ] . indexOf . call ( endNode . parentNode . childNodes , endNode ) ;
endNode = endNode . parentNode ;
}
var range = document . createRange ( ) ;
range . setStart ( startNode , startOffset ) ;
range . setEnd ( endNode , endOffset ) ;
selection . removeAllRanges ( ) ;
selection . addRange ( range ) ;
}
} else {
selection . removeAllRanges ( ) ;
this . root . blur ( ) ;
document . body . focus ( ) ; // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)
}
}
} , {
key : 'setRange' ,
value : function setRange ( range ) {
var force = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : false ;
var source = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : _emitter4 . default . sources . API ;
if ( typeof force === 'string' ) {
source = force ;
force = false ;
}
debug . info ( 'setRange' , range ) ;
if ( range != null ) {
var args = this . rangeToNative ( range ) ;
this . setNativeRange . apply ( this , _toConsumableArray ( args ) . concat ( [ force ] ) ) ;
} else {
this . setNativeRange ( null ) ;
}
this . update ( source ) ;
}
} , {
key : 'update' ,
value : function update ( ) {
var source = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : _emitter4 . default . sources . USER ;
var oldRange = this . lastRange ;
var _getRange = this . getRange ( ) ,
_getRange2 = _slicedToArray ( _getRange , 2 ) ,
lastRange = _getRange2 [ 0 ] ,
nativeRange = _getRange2 [ 1 ] ;
this . lastRange = lastRange ;
if ( this . lastRange != null ) {
this . savedRange = this . lastRange ;
}
if ( ! ( 0 , _deepEqual2 . default ) ( oldRange , this . lastRange ) ) {
var _emitter ;
if ( ! this . composing && nativeRange != null && nativeRange . native . collapsed && nativeRange . start . node !== this . cursor . textNode ) {
this . cursor . restore ( ) ;
}
var args = [ _emitter4 . default . events . SELECTION _CHANGE , ( 0 , _clone2 . default ) ( this . lastRange ) , ( 0 , _clone2 . default ) ( oldRange ) , source ] ;
( _emitter = this . emitter ) . emit . apply ( _emitter , [ _emitter4 . default . events . EDITOR _CHANGE ] . concat ( args ) ) ;
if ( source !== _emitter4 . default . sources . SILENT ) {
var _emitter2 ;
( _emitter2 = this . emitter ) . emit . apply ( _emitter2 , args ) ;
}
}
}
} ] ) ;
return Selection ;
} ( ) ;
function contains ( parent , descendant ) {
try {
// Firefox inserts inaccessible nodes around video elements
descendant . parentNode ;
} catch ( e ) {
return false ;
}
// IE11 has bug with Text nodes
// https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect
if ( descendant instanceof Text ) {
descendant = descendant . parentNode ;
}
return parent . contains ( descendant ) ;
}
exports . Range = Range ;
exports . default = Selection ;
/***/ } ) ,
/* 16 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var Break = function ( _Parchment$Embed ) {
_inherits ( Break , _Parchment$Embed ) ;
function Break ( ) {
_classCallCheck ( this , Break ) ;
return _possibleConstructorReturn ( this , ( Break . _ _proto _ _ || Object . getPrototypeOf ( Break ) ) . apply ( this , arguments ) ) ;
}
_createClass ( Break , [ {
key : 'insertInto' ,
value : function insertInto ( parent , ref ) {
if ( parent . children . length === 0 ) {
_get ( Break . prototype . _ _proto _ _ || Object . getPrototypeOf ( Break . prototype ) , 'insertInto' , this ) . call ( this , parent , ref ) ;
} else {
this . remove ( ) ;
}
}
} , {
key : 'length' ,
value : function length ( ) {
return 0 ;
}
} , {
key : 'value' ,
value : function value ( ) {
return '' ;
}
} ] , [ {
key : 'value' ,
value : function value ( ) {
return undefined ;
}
} ] ) ;
return Break ;
} ( _parchment2 . default . Embed ) ;
Break . blotName = 'break' ;
Break . tagName = 'BR' ;
exports . default = Break ;
/***/ } ) ,
/* 17 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var linked _list _1 = _ _webpack _require _ _ ( 44 ) ;
var shadow _1 = _ _webpack _require _ _ ( 30 ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var ContainerBlot = /** @class */ ( function ( _super ) {
_ _extends ( ContainerBlot , _super ) ;
function ContainerBlot ( domNode ) {
var _this = _super . call ( this , domNode ) || this ;
_this . build ( ) ;
return _this ;
}
ContainerBlot . prototype . appendChild = function ( other ) {
this . insertBefore ( other ) ;
} ;
ContainerBlot . prototype . attach = function ( ) {
_super . prototype . attach . call ( this ) ;
this . children . forEach ( function ( child ) {
child . attach ( ) ;
} ) ;
} ;
ContainerBlot . prototype . build = function ( ) {
var _this = this ;
this . children = new linked _list _1 . default ( ) ;
// Need to be reversed for if DOM nodes already in order
[ ] . slice
. call ( this . domNode . childNodes )
. reverse ( )
. forEach ( function ( node ) {
try {
var child = makeBlot ( node ) ;
_this . insertBefore ( child , _this . children . head || undefined ) ;
}
catch ( err ) {
if ( err instanceof Registry . ParchmentError )
return ;
else
throw err ;
}
} ) ;
} ;
ContainerBlot . prototype . deleteAt = function ( index , length ) {
if ( index === 0 && length === this . length ( ) ) {
return this . remove ( ) ;
}
this . children . forEachAt ( index , length , function ( child , offset , length ) {
child . deleteAt ( offset , length ) ;
} ) ;
} ;
ContainerBlot . prototype . descendant = function ( criteria , index ) {
var _a = this . children . find ( index ) , child = _a [ 0 ] , offset = _a [ 1 ] ;
if ( ( criteria . blotName == null && criteria ( child ) ) ||
( criteria . blotName != null && child instanceof criteria ) ) {
return [ child , offset ] ;
}
else if ( child instanceof ContainerBlot ) {
return child . descendant ( criteria , offset ) ;
}
else {
return [ null , - 1 ] ;
}
} ;
ContainerBlot . prototype . descendants = function ( criteria , index , length ) {
if ( index === void 0 ) { index = 0 ; }
if ( length === void 0 ) { length = Number . MAX _VALUE ; }
var descendants = [ ] ;
var lengthLeft = length ;
this . children . forEachAt ( index , length , function ( child , index , length ) {
if ( ( criteria . blotName == null && criteria ( child ) ) ||
( criteria . blotName != null && child instanceof criteria ) ) {
descendants . push ( child ) ;
}
if ( child instanceof ContainerBlot ) {
descendants = descendants . concat ( child . descendants ( criteria , index , lengthLeft ) ) ;
}
lengthLeft -= length ;
} ) ;
return descendants ;
} ;
ContainerBlot . prototype . detach = function ( ) {
this . children . forEach ( function ( child ) {
child . detach ( ) ;
} ) ;
_super . prototype . detach . call ( this ) ;
} ;
ContainerBlot . prototype . formatAt = function ( index , length , name , value ) {
this . children . forEachAt ( index , length , function ( child , offset , length ) {
child . formatAt ( offset , length , name , value ) ;
} ) ;
} ;
ContainerBlot . prototype . insertAt = function ( index , value , def ) {
var _a = this . children . find ( index ) , child = _a [ 0 ] , offset = _a [ 1 ] ;
if ( child ) {
child . insertAt ( offset , value , def ) ;
}
else {
var blot = def == null ? Registry . create ( 'text' , value ) : Registry . create ( value , def ) ;
this . appendChild ( blot ) ;
}
} ;
ContainerBlot . prototype . insertBefore = function ( childBlot , refBlot ) {
if ( this . statics . allowedChildren != null &&
! this . statics . allowedChildren . some ( function ( child ) {
return childBlot instanceof child ;
} ) ) {
throw new Registry . ParchmentError ( "Cannot insert " + childBlot . statics . blotName + " into " + this . statics . blotName ) ;
}
childBlot . insertInto ( this , refBlot ) ;
} ;
ContainerBlot . prototype . length = function ( ) {
return this . children . reduce ( function ( memo , child ) {
return memo + child . length ( ) ;
} , 0 ) ;
} ;
ContainerBlot . prototype . moveChildren = function ( targetParent , refNode ) {
this . children . forEach ( function ( child ) {
targetParent . insertBefore ( child , refNode ) ;
} ) ;
} ;
ContainerBlot . prototype . optimize = function ( context ) {
_super . prototype . optimize . call ( this , context ) ;
if ( this . children . length === 0 ) {
if ( this . statics . defaultChild != null ) {
var child = Registry . create ( this . statics . defaultChild ) ;
this . appendChild ( child ) ;
child . optimize ( context ) ;
}
else {
this . remove ( ) ;
}
}
} ;
ContainerBlot . prototype . path = function ( index , inclusive ) {
if ( inclusive === void 0 ) { inclusive = false ; }
var _a = this . children . find ( index , inclusive ) , child = _a [ 0 ] , offset = _a [ 1 ] ;
var position = [ [ this , index ] ] ;
if ( child instanceof ContainerBlot ) {
return position . concat ( child . path ( offset , inclusive ) ) ;
}
else if ( child != null ) {
position . push ( [ child , offset ] ) ;
}
return position ;
} ;
ContainerBlot . prototype . removeChild = function ( child ) {
this . children . remove ( child ) ;
} ;
ContainerBlot . prototype . replace = function ( target ) {
if ( target instanceof ContainerBlot ) {
target . moveChildren ( this ) ;
}
_super . prototype . replace . call ( this , target ) ;
} ;
ContainerBlot . prototype . split = function ( index , force ) {
if ( force === void 0 ) { force = false ; }
if ( ! force ) {
if ( index === 0 )
return this ;
if ( index === this . length ( ) )
return this . next ;
}
var after = this . clone ( ) ;
this . parent . insertBefore ( after , this . next ) ;
this . children . forEachAt ( index , this . length ( ) , function ( child , offset , length ) {
child = child . split ( offset , force ) ;
after . appendChild ( child ) ;
} ) ;
return after ;
} ;
ContainerBlot . prototype . unwrap = function ( ) {
this . moveChildren ( this . parent , this . next ) ;
this . remove ( ) ;
} ;
ContainerBlot . prototype . update = function ( mutations , context ) {
var _this = this ;
var addedNodes = [ ] ;
var removedNodes = [ ] ;
mutations . forEach ( function ( mutation ) {
if ( mutation . target === _this . domNode && mutation . type === 'childList' ) {
addedNodes . push . apply ( addedNodes , mutation . addedNodes ) ;
removedNodes . push . apply ( removedNodes , mutation . removedNodes ) ;
}
} ) ;
removedNodes . forEach ( function ( node ) {
// Check node has actually been removed
// One exception is Chrome does not immediately remove IFRAMEs
// from DOM but MutationRecord is correct in its reported removal
if ( node . parentNode != null &&
// @ts-ignore
node . tagName !== 'IFRAME' &&
document . body . compareDocumentPosition ( node ) & Node . DOCUMENT _POSITION _CONTAINED _BY ) {
return ;
}
var blot = Registry . find ( node ) ;
if ( blot == null )
return ;
if ( blot . domNode . parentNode == null || blot . domNode . parentNode === _this . domNode ) {
blot . detach ( ) ;
}
} ) ;
addedNodes
. filter ( function ( node ) {
return node . parentNode == _this . domNode ;
} )
. sort ( function ( a , b ) {
if ( a === b )
return 0 ;
if ( a . compareDocumentPosition ( b ) & Node . DOCUMENT _POSITION _FOLLOWING ) {
return 1 ;
}
return - 1 ;
} )
. forEach ( function ( node ) {
var refBlot = null ;
if ( node . nextSibling != null ) {
refBlot = Registry . find ( node . nextSibling ) ;
}
var blot = makeBlot ( node ) ;
if ( blot . next != refBlot || blot . next == null ) {
if ( blot . parent != null ) {
blot . parent . removeChild ( _this ) ;
}
_this . insertBefore ( blot , refBlot || undefined ) ;
}
} ) ;
} ;
return ContainerBlot ;
} ( shadow _1 . default ) ) ;
function makeBlot ( node ) {
var blot = Registry . find ( node ) ;
if ( blot == null ) {
try {
blot = Registry . create ( node ) ;
}
catch ( e ) {
blot = Registry . create ( Registry . Scope . INLINE ) ;
[ ] . slice . call ( node . childNodes ) . forEach ( function ( child ) {
// @ts-ignore
blot . domNode . appendChild ( child ) ;
} ) ;
if ( node . parentNode ) {
node . parentNode . replaceChild ( blot . domNode , node ) ;
}
blot . attach ( ) ;
}
}
return blot ;
}
exports . default = ContainerBlot ;
/***/ } ) ,
/* 18 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var attributor _1 = _ _webpack _require _ _ ( 12 ) ;
var store _1 = _ _webpack _require _ _ ( 31 ) ;
var container _1 = _ _webpack _require _ _ ( 17 ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var FormatBlot = /** @class */ ( function ( _super ) {
_ _extends ( FormatBlot , _super ) ;
function FormatBlot ( domNode ) {
var _this = _super . call ( this , domNode ) || this ;
_this . attributes = new store _1 . default ( _this . domNode ) ;
return _this ;
}
FormatBlot . formats = function ( domNode ) {
if ( typeof this . tagName === 'string' ) {
return true ;
}
else if ( Array . isArray ( this . tagName ) ) {
return domNode . tagName . toLowerCase ( ) ;
}
return undefined ;
} ;
FormatBlot . prototype . format = function ( name , value ) {
var format = Registry . query ( name ) ;
if ( format instanceof attributor _1 . default ) {
this . attributes . attribute ( format , value ) ;
}
else if ( value ) {
if ( format != null && ( name !== this . statics . blotName || this . formats ( ) [ name ] !== value ) ) {
this . replaceWith ( name , value ) ;
}
}
} ;
FormatBlot . prototype . formats = function ( ) {
var formats = this . attributes . values ( ) ;
var format = this . statics . formats ( this . domNode ) ;
if ( format != null ) {
formats [ this . statics . blotName ] = format ;
}
return formats ;
} ;
FormatBlot . prototype . replaceWith = function ( name , value ) {
var replacement = _super . prototype . replaceWith . call ( this , name , value ) ;
this . attributes . copy ( replacement ) ;
return replacement ;
} ;
FormatBlot . prototype . update = function ( mutations , context ) {
var _this = this ;
_super . prototype . update . call ( this , mutations , context ) ;
if ( mutations . some ( function ( mutation ) {
return mutation . target === _this . domNode && mutation . type === 'attributes' ;
} ) ) {
this . attributes . build ( ) ;
}
} ;
FormatBlot . prototype . wrap = function ( name , value ) {
var wrapper = _super . prototype . wrap . call ( this , name , value ) ;
if ( wrapper instanceof FormatBlot && wrapper . statics . scope === this . statics . scope ) {
this . attributes . move ( wrapper ) ;
}
return wrapper ;
} ;
return FormatBlot ;
} ( container _1 . default ) ) ;
exports . default = FormatBlot ;
/***/ } ) ,
/* 19 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var shadow _1 = _ _webpack _require _ _ ( 30 ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var LeafBlot = /** @class */ ( function ( _super ) {
_ _extends ( LeafBlot , _super ) ;
function LeafBlot ( ) {
return _super !== null && _super . apply ( this , arguments ) || this ;
}
LeafBlot . value = function ( domNode ) {
return true ;
} ;
LeafBlot . prototype . index = function ( node , offset ) {
if ( this . domNode === node ||
this . domNode . compareDocumentPosition ( node ) & Node . DOCUMENT _POSITION _CONTAINED _BY ) {
return Math . min ( offset , 1 ) ;
}
return - 1 ;
} ;
LeafBlot . prototype . position = function ( index , inclusive ) {
var offset = [ ] . indexOf . call ( this . parent . domNode . childNodes , this . domNode ) ;
if ( index > 0 )
offset += 1 ;
return [ this . parent . domNode , offset ] ;
} ;
LeafBlot . prototype . value = function ( ) {
var _a ;
2020-10-21 17:34:56 +08:00
return _a = { } , _a [ this . statics . blotName ] = this . statics . value ( this . domNode ) || true , _a ;
2019-10-06 04:57:44 +08:00
} ;
LeafBlot . scope = Registry . Scope . INLINE _BLOT ;
return LeafBlot ;
} ( shadow _1 . default ) ) ;
exports . default = LeafBlot ;
/***/ } ) ,
/* 20 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
var equal = _ _webpack _require _ _ ( 11 ) ;
var extend = _ _webpack _require _ _ ( 3 ) ;
var lib = {
attributes : {
compose : function ( a , b , keepNull ) {
if ( typeof a !== 'object' ) a = { } ;
if ( typeof b !== 'object' ) b = { } ;
var attributes = extend ( true , { } , b ) ;
if ( ! keepNull ) {
attributes = Object . keys ( attributes ) . reduce ( function ( copy , key ) {
if ( attributes [ key ] != null ) {
copy [ key ] = attributes [ key ] ;
}
return copy ;
} , { } ) ;
}
for ( var key in a ) {
if ( a [ key ] !== undefined && b [ key ] === undefined ) {
attributes [ key ] = a [ key ] ;
}
}
return Object . keys ( attributes ) . length > 0 ? attributes : undefined ;
} ,
diff : function ( a , b ) {
if ( typeof a !== 'object' ) a = { } ;
if ( typeof b !== 'object' ) b = { } ;
var attributes = Object . keys ( a ) . concat ( Object . keys ( b ) ) . reduce ( function ( attributes , key ) {
if ( ! equal ( a [ key ] , b [ key ] ) ) {
attributes [ key ] = b [ key ] === undefined ? null : b [ key ] ;
}
return attributes ;
} , { } ) ;
return Object . keys ( attributes ) . length > 0 ? attributes : undefined ;
} ,
transform : function ( a , b , priority ) {
if ( typeof a !== 'object' ) return b ;
if ( typeof b !== 'object' ) return undefined ;
if ( ! priority ) return b ; // b simply overwrites us without priority
var attributes = Object . keys ( b ) . reduce ( function ( attributes , key ) {
if ( a [ key ] === undefined ) attributes [ key ] = b [ key ] ; // null is a valid value
return attributes ;
} , { } ) ;
return Object . keys ( attributes ) . length > 0 ? attributes : undefined ;
}
} ,
iterator : function ( ops ) {
return new Iterator ( ops ) ;
} ,
length : function ( op ) {
if ( typeof op [ 'delete' ] === 'number' ) {
return op [ 'delete' ] ;
} else if ( typeof op . retain === 'number' ) {
return op . retain ;
} else {
return typeof op . insert === 'string' ? op . insert . length : 1 ;
}
}
} ;
function Iterator ( ops ) {
this . ops = ops ;
this . index = 0 ;
this . offset = 0 ;
} ;
Iterator . prototype . hasNext = function ( ) {
return this . peekLength ( ) < Infinity ;
} ;
Iterator . prototype . next = function ( length ) {
if ( ! length ) length = Infinity ;
var nextOp = this . ops [ this . index ] ;
if ( nextOp ) {
var offset = this . offset ;
var opLength = lib . length ( nextOp )
if ( length >= opLength - offset ) {
length = opLength - offset ;
this . index += 1 ;
this . offset = 0 ;
} else {
this . offset += length ;
}
if ( typeof nextOp [ 'delete' ] === 'number' ) {
return { 'delete' : length } ;
} else {
var retOp = { } ;
if ( nextOp . attributes ) {
retOp . attributes = nextOp . attributes ;
}
if ( typeof nextOp . retain === 'number' ) {
retOp . retain = length ;
} else if ( typeof nextOp . insert === 'string' ) {
retOp . insert = nextOp . insert . substr ( offset , length ) ;
} else {
// offset should === 0, length should === 1
retOp . insert = nextOp . insert ;
}
return retOp ;
}
} else {
return { retain : Infinity } ;
}
} ;
Iterator . prototype . peek = function ( ) {
return this . ops [ this . index ] ;
} ;
Iterator . prototype . peekLength = function ( ) {
if ( this . ops [ this . index ] ) {
// Should never return 0 if our index is being managed correctly
return lib . length ( this . ops [ this . index ] ) - this . offset ;
} else {
return Infinity ;
}
} ;
Iterator . prototype . peekType = function ( ) {
if ( this . ops [ this . index ] ) {
if ( typeof this . ops [ this . index ] [ 'delete' ] === 'number' ) {
return 'delete' ;
} else if ( typeof this . ops [ this . index ] . retain === 'number' ) {
return 'retain' ;
} else {
return 'insert' ;
}
}
return 'retain' ;
} ;
2020-10-21 17:34:56 +08:00
Iterator . prototype . rest = function ( ) {
if ( ! this . hasNext ( ) ) {
return [ ] ;
} else if ( this . offset === 0 ) {
return this . ops . slice ( this . index ) ;
} else {
var offset = this . offset ;
var index = this . index ;
var next = this . next ( ) ;
var rest = this . ops . slice ( this . index ) ;
this . offset = offset ;
this . index = index ;
return [ next ] . concat ( rest ) ;
}
} ;
2019-10-06 04:57:44 +08:00
module . exports = lib ;
/***/ } ) ,
/* 21 */
/***/ ( function ( module , exports ) {
var clone = ( function ( ) {
'use strict' ;
function _instanceof ( obj , type ) {
return type != null && obj instanceof type ;
}
var nativeMap ;
try {
nativeMap = Map ;
} catch ( _ ) {
// maybe a reference error because no `Map`. Give it a dummy value that no
// value will ever be an instanceof.
nativeMap = function ( ) { } ;
}
var nativeSet ;
try {
nativeSet = Set ;
} catch ( _ ) {
nativeSet = function ( ) { } ;
}
var nativePromise ;
try {
nativePromise = Promise ;
} catch ( _ ) {
nativePromise = function ( ) { } ;
}
/ * *
* Clones ( copies ) an Object using deep copying .
*
* This function supports circular references by default , but if you are certain
* there are no circular references in your object , you can save some CPU time
* by calling clone ( obj , false ) .
*
* Caution : if ` circular ` is false and ` parent ` contains circular references ,
* your program may enter an infinite loop and crash .
*
* @ param ` parent ` - the object to be cloned
* @ param ` circular ` - set to true if the object to be cloned may contain
* circular references . ( optional - true by default )
* @ param ` depth ` - set to a number if the object is only to be cloned to
* a particular depth . ( optional - defaults to Infinity )
* @ param ` prototype ` - sets the prototype to be used when cloning an object .
* ( optional - defaults to parent prototype ) .
* @ param ` includeNonEnumerable ` - set to true if the non - enumerable properties
* should be cloned as well . Non - enumerable properties on the prototype
* chain will be ignored . ( optional - false by default )
* /
function clone ( parent , circular , depth , prototype , includeNonEnumerable ) {
if ( typeof circular === 'object' ) {
depth = circular . depth ;
prototype = circular . prototype ;
includeNonEnumerable = circular . includeNonEnumerable ;
circular = circular . circular ;
}
// maintain two arrays for circular references, where corresponding parents
// and children have the same index
var allParents = [ ] ;
var allChildren = [ ] ;
var useBuffer = typeof Buffer != 'undefined' ;
if ( typeof circular == 'undefined' )
circular = true ;
if ( typeof depth == 'undefined' )
depth = Infinity ;
// recurse this function so we don't reset allParents and allChildren
function _clone ( parent , depth ) {
// cloning null always returns null
if ( parent === null )
return null ;
if ( depth === 0 )
return parent ;
var child ;
var proto ;
if ( typeof parent != 'object' ) {
return parent ;
}
if ( _instanceof ( parent , nativeMap ) ) {
child = new nativeMap ( ) ;
} else if ( _instanceof ( parent , nativeSet ) ) {
child = new nativeSet ( ) ;
} else if ( _instanceof ( parent , nativePromise ) ) {
child = new nativePromise ( function ( resolve , reject ) {
parent . then ( function ( value ) {
resolve ( _clone ( value , depth - 1 ) ) ;
} , function ( err ) {
reject ( _clone ( err , depth - 1 ) ) ;
} ) ;
} ) ;
} else if ( clone . _ _isArray ( parent ) ) {
child = [ ] ;
} else if ( clone . _ _isRegExp ( parent ) ) {
child = new RegExp ( parent . source , _ _getRegExpFlags ( parent ) ) ;
if ( parent . lastIndex ) child . lastIndex = parent . lastIndex ;
} else if ( clone . _ _isDate ( parent ) ) {
child = new Date ( parent . getTime ( ) ) ;
} else if ( useBuffer && Buffer . isBuffer ( parent ) ) {
2020-10-21 17:34:56 +08:00
if ( Buffer . allocUnsafe ) {
// Node.js >= 4.5.0
child = Buffer . allocUnsafe ( parent . length ) ;
} else {
// Older Node.js versions
child = new Buffer ( parent . length ) ;
}
2019-10-06 04:57:44 +08:00
parent . copy ( child ) ;
return child ;
} else if ( _instanceof ( parent , Error ) ) {
child = Object . create ( parent ) ;
} else {
if ( typeof prototype == 'undefined' ) {
proto = Object . getPrototypeOf ( parent ) ;
child = Object . create ( proto ) ;
}
else {
child = Object . create ( prototype ) ;
proto = prototype ;
}
}
if ( circular ) {
var index = allParents . indexOf ( parent ) ;
if ( index != - 1 ) {
return allChildren [ index ] ;
}
allParents . push ( parent ) ;
allChildren . push ( child ) ;
}
if ( _instanceof ( parent , nativeMap ) ) {
parent . forEach ( function ( value , key ) {
var keyChild = _clone ( key , depth - 1 ) ;
var valueChild = _clone ( value , depth - 1 ) ;
child . set ( keyChild , valueChild ) ;
} ) ;
}
if ( _instanceof ( parent , nativeSet ) ) {
parent . forEach ( function ( value ) {
var entryChild = _clone ( value , depth - 1 ) ;
child . add ( entryChild ) ;
} ) ;
}
for ( var i in parent ) {
var attrs ;
if ( proto ) {
attrs = Object . getOwnPropertyDescriptor ( proto , i ) ;
}
if ( attrs && attrs . set == null ) {
continue ;
}
child [ i ] = _clone ( parent [ i ] , depth - 1 ) ;
}
if ( Object . getOwnPropertySymbols ) {
var symbols = Object . getOwnPropertySymbols ( parent ) ;
for ( var i = 0 ; i < symbols . length ; i ++ ) {
// Don't need to worry about cloning a symbol because it is a primitive,
// like a number or string.
var symbol = symbols [ i ] ;
var descriptor = Object . getOwnPropertyDescriptor ( parent , symbol ) ;
if ( descriptor && ! descriptor . enumerable && ! includeNonEnumerable ) {
continue ;
}
child [ symbol ] = _clone ( parent [ symbol ] , depth - 1 ) ;
if ( ! descriptor . enumerable ) {
Object . defineProperty ( child , symbol , {
enumerable : false
} ) ;
}
}
}
if ( includeNonEnumerable ) {
var allPropertyNames = Object . getOwnPropertyNames ( parent ) ;
for ( var i = 0 ; i < allPropertyNames . length ; i ++ ) {
var propertyName = allPropertyNames [ i ] ;
var descriptor = Object . getOwnPropertyDescriptor ( parent , propertyName ) ;
if ( descriptor && descriptor . enumerable ) {
continue ;
}
child [ propertyName ] = _clone ( parent [ propertyName ] , depth - 1 ) ;
Object . defineProperty ( child , propertyName , {
enumerable : false
} ) ;
}
}
return child ;
}
return _clone ( parent , depth ) ;
}
/ * *
* Simple flat clone using prototype , accepts only objects , usefull for property
* override on FLAT configuration object ( no nested props ) .
*
* USE WITH CAUTION ! This may not behave as you wish if you do not know how this
* works .
* /
clone . clonePrototype = function clonePrototype ( parent ) {
if ( parent === null )
return null ;
var c = function ( ) { } ;
c . prototype = parent ;
return new c ( ) ;
} ;
// private utility functions
function _ _objToStr ( o ) {
return Object . prototype . toString . call ( o ) ;
}
clone . _ _objToStr = _ _objToStr ;
function _ _isDate ( o ) {
return typeof o === 'object' && _ _objToStr ( o ) === '[object Date]' ;
}
clone . _ _isDate = _ _isDate ;
function _ _isArray ( o ) {
return typeof o === 'object' && _ _objToStr ( o ) === '[object Array]' ;
}
clone . _ _isArray = _ _isArray ;
function _ _isRegExp ( o ) {
return typeof o === 'object' && _ _objToStr ( o ) === '[object RegExp]' ;
}
clone . _ _isRegExp = _ _isRegExp ;
function _ _getRegExpFlags ( re ) {
var flags = '' ;
if ( re . global ) flags += 'g' ;
if ( re . ignoreCase ) flags += 'i' ;
if ( re . multiline ) flags += 'm' ;
return flags ;
}
clone . _ _getRegExpFlags = _ _getRegExpFlags ;
return clone ;
} ) ( ) ;
if ( typeof module === 'object' && module . exports ) {
module . exports = clone ;
}
/***/ } ) ,
/* 22 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _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" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _emitter = _ _webpack _require _ _ ( 8 ) ;
var _emitter2 = _interopRequireDefault ( _emitter ) ;
var _block = _ _webpack _require _ _ ( 4 ) ;
var _block2 = _interopRequireDefault ( _block ) ;
var _break = _ _webpack _require _ _ ( 16 ) ;
var _break2 = _interopRequireDefault ( _break ) ;
var _code = _ _webpack _require _ _ ( 13 ) ;
var _code2 = _interopRequireDefault ( _code ) ;
var _container = _ _webpack _require _ _ ( 25 ) ;
var _container2 = _interopRequireDefault ( _container ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
function isLine ( blot ) {
return blot instanceof _block2 . default || blot instanceof _block . BlockEmbed ;
}
var Scroll = function ( _Parchment$Scroll ) {
_inherits ( Scroll , _Parchment$Scroll ) ;
function Scroll ( domNode , config ) {
_classCallCheck ( this , Scroll ) ;
var _this = _possibleConstructorReturn ( this , ( Scroll . _ _proto _ _ || Object . getPrototypeOf ( Scroll ) ) . call ( this , domNode ) ) ;
_this . emitter = config . emitter ;
if ( Array . isArray ( config . whitelist ) ) {
_this . whitelist = config . whitelist . reduce ( function ( whitelist , format ) {
whitelist [ format ] = true ;
return whitelist ;
} , { } ) ;
}
// Some reason fixes composition issues with character languages in Windows/Chrome, Safari
_this . domNode . addEventListener ( 'DOMNodeInserted' , function ( ) { } ) ;
_this . optimize ( ) ;
_this . enable ( ) ;
return _this ;
}
_createClass ( Scroll , [ {
key : 'batchStart' ,
value : function batchStart ( ) {
this . batch = true ;
}
} , {
key : 'batchEnd' ,
value : function batchEnd ( ) {
this . batch = false ;
this . optimize ( ) ;
}
} , {
key : 'deleteAt' ,
value : function deleteAt ( index , length ) {
var _line = this . line ( index ) ,
_line2 = _slicedToArray ( _line , 2 ) ,
first = _line2 [ 0 ] ,
offset = _line2 [ 1 ] ;
var _line3 = this . line ( index + length ) ,
_line4 = _slicedToArray ( _line3 , 1 ) ,
last = _line4 [ 0 ] ;
_get ( Scroll . prototype . _ _proto _ _ || Object . getPrototypeOf ( Scroll . prototype ) , 'deleteAt' , this ) . call ( this , index , length ) ;
if ( last != null && first !== last && offset > 0 ) {
if ( first instanceof _block . BlockEmbed || last instanceof _block . BlockEmbed ) {
this . optimize ( ) ;
return ;
}
if ( first instanceof _code2 . default ) {
var newlineIndex = first . newlineIndex ( first . length ( ) , true ) ;
if ( newlineIndex > - 1 ) {
first = first . split ( newlineIndex + 1 ) ;
if ( first === last ) {
this . optimize ( ) ;
return ;
}
}
} else if ( last instanceof _code2 . default ) {
var _newlineIndex = last . newlineIndex ( 0 ) ;
if ( _newlineIndex > - 1 ) {
last . split ( _newlineIndex + 1 ) ;
}
}
var ref = last . children . head instanceof _break2 . default ? null : last . children . head ;
first . moveChildren ( last , ref ) ;
first . remove ( ) ;
}
this . optimize ( ) ;
}
} , {
key : 'enable' ,
value : function enable ( ) {
var enabled = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : true ;
this . domNode . setAttribute ( 'contenteditable' , enabled ) ;
}
} , {
key : 'formatAt' ,
value : function formatAt ( index , length , format , value ) {
if ( this . whitelist != null && ! this . whitelist [ format ] ) return ;
_get ( Scroll . prototype . _ _proto _ _ || Object . getPrototypeOf ( Scroll . prototype ) , 'formatAt' , this ) . call ( this , index , length , format , value ) ;
this . optimize ( ) ;
}
} , {
key : 'insertAt' ,
value : function insertAt ( index , value , def ) {
if ( def != null && this . whitelist != null && ! this . whitelist [ value ] ) return ;
if ( index >= this . length ( ) ) {
if ( def == null || _parchment2 . default . query ( value , _parchment2 . default . Scope . BLOCK ) == null ) {
var blot = _parchment2 . default . create ( this . statics . defaultChild ) ;
this . appendChild ( blot ) ;
if ( def == null && value . endsWith ( '\n' ) ) {
value = value . slice ( 0 , - 1 ) ;
}
blot . insertAt ( 0 , value , def ) ;
} else {
var embed = _parchment2 . default . create ( value , def ) ;
this . appendChild ( embed ) ;
}
} else {
_get ( Scroll . prototype . _ _proto _ _ || Object . getPrototypeOf ( Scroll . prototype ) , 'insertAt' , this ) . call ( this , index , value , def ) ;
}
this . optimize ( ) ;
}
} , {
key : 'insertBefore' ,
value : function insertBefore ( blot , ref ) {
if ( blot . statics . scope === _parchment2 . default . Scope . INLINE _BLOT ) {
var wrapper = _parchment2 . default . create ( this . statics . defaultChild ) ;
wrapper . appendChild ( blot ) ;
blot = wrapper ;
}
_get ( Scroll . prototype . _ _proto _ _ || Object . getPrototypeOf ( Scroll . prototype ) , 'insertBefore' , this ) . call ( this , blot , ref ) ;
}
} , {
key : 'leaf' ,
value : function leaf ( index ) {
return this . path ( index ) . pop ( ) || [ null , - 1 ] ;
}
} , {
key : 'line' ,
value : function line ( index ) {
if ( index === this . length ( ) ) {
return this . line ( index - 1 ) ;
}
return this . descendant ( isLine , index ) ;
}
} , {
key : 'lines' ,
value : function lines ( ) {
var index = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : 0 ;
var length = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : Number . MAX _VALUE ;
var getLines = function getLines ( blot , index , length ) {
var lines = [ ] ,
lengthLeft = length ;
blot . children . forEachAt ( index , length , function ( child , index , length ) {
if ( isLine ( child ) ) {
lines . push ( child ) ;
} else if ( child instanceof _parchment2 . default . Container ) {
lines = lines . concat ( getLines ( child , index , lengthLeft ) ) ;
}
lengthLeft -= length ;
} ) ;
return lines ;
} ;
return getLines ( this , index , length ) ;
}
} , {
key : 'optimize' ,
value : function optimize ( ) {
var mutations = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : [ ] ;
var context = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
if ( this . batch === true ) return ;
_get ( Scroll . prototype . _ _proto _ _ || Object . getPrototypeOf ( Scroll . prototype ) , 'optimize' , this ) . call ( this , mutations , context ) ;
if ( mutations . length > 0 ) {
this . emitter . emit ( _emitter2 . default . events . SCROLL _OPTIMIZE , mutations , context ) ;
}
}
} , {
key : 'path' ,
value : function path ( index ) {
return _get ( Scroll . prototype . _ _proto _ _ || Object . getPrototypeOf ( Scroll . prototype ) , 'path' , this ) . call ( this , index ) . slice ( 1 ) ; // Exclude self
}
} , {
key : 'update' ,
value : function update ( mutations ) {
if ( this . batch === true ) return ;
var source = _emitter2 . default . sources . USER ;
if ( typeof mutations === 'string' ) {
source = mutations ;
}
if ( ! Array . isArray ( mutations ) ) {
mutations = this . observer . takeRecords ( ) ;
}
if ( mutations . length > 0 ) {
this . emitter . emit ( _emitter2 . default . events . SCROLL _BEFORE _UPDATE , source , mutations ) ;
}
_get ( Scroll . prototype . _ _proto _ _ || Object . getPrototypeOf ( Scroll . prototype ) , 'update' , this ) . call ( this , mutations . concat ( [ ] ) ) ; // pass copy
if ( mutations . length > 0 ) {
this . emitter . emit ( _emitter2 . default . events . SCROLL _UPDATE , source , mutations ) ;
}
}
} ] ) ;
return Scroll ;
} ( _parchment2 . default . Scroll ) ;
Scroll . blotName = 'scroll' ;
Scroll . className = 'ql-editor' ;
Scroll . tagName = 'DIV' ;
Scroll . defaultChild = 'block' ;
Scroll . allowedChildren = [ _block2 . default , _block . BlockEmbed , _container2 . default ] ;
exports . default = Scroll ;
/***/ } ) ,
/* 23 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . SHORTKEY = exports . default = undefined ;
var _typeof = typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ? function ( obj ) { return typeof obj ; } : function ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _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" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _clone = _ _webpack _require _ _ ( 21 ) ;
var _clone2 = _interopRequireDefault ( _clone ) ;
var _deepEqual = _ _webpack _require _ _ ( 11 ) ;
var _deepEqual2 = _interopRequireDefault ( _deepEqual ) ;
var _extend = _ _webpack _require _ _ ( 3 ) ;
var _extend2 = _interopRequireDefault ( _extend ) ;
var _quillDelta = _ _webpack _require _ _ ( 2 ) ;
var _quillDelta2 = _interopRequireDefault ( _quillDelta ) ;
var _op = _ _webpack _require _ _ ( 20 ) ;
var _op2 = _interopRequireDefault ( _op ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _quill = _ _webpack _require _ _ ( 5 ) ;
var _quill2 = _interopRequireDefault ( _quill ) ;
var _logger = _ _webpack _require _ _ ( 10 ) ;
var _logger2 = _interopRequireDefault ( _logger ) ;
var _module = _ _webpack _require _ _ ( 9 ) ;
var _module2 = _interopRequireDefault ( _module ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _defineProperty ( obj , key , value ) { if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var debug = ( 0 , _logger2 . default ) ( 'quill:keyboard' ) ;
var SHORTKEY = /Mac/i . test ( navigator . platform ) ? 'metaKey' : 'ctrlKey' ;
var Keyboard = function ( _Module ) {
_inherits ( Keyboard , _Module ) ;
_createClass ( Keyboard , null , [ {
key : 'match' ,
value : function match ( evt , binding ) {
binding = normalize ( binding ) ;
if ( [ 'altKey' , 'ctrlKey' , 'metaKey' , 'shiftKey' ] . some ( function ( key ) {
return ! ! binding [ key ] !== evt [ key ] && binding [ key ] !== null ;
} ) ) {
return false ;
}
return binding . key === ( evt . which || evt . keyCode ) ;
}
} ] ) ;
function Keyboard ( quill , options ) {
_classCallCheck ( this , Keyboard ) ;
var _this = _possibleConstructorReturn ( this , ( Keyboard . _ _proto _ _ || Object . getPrototypeOf ( Keyboard ) ) . call ( this , quill , options ) ) ;
_this . bindings = { } ;
Object . keys ( _this . options . bindings ) . forEach ( function ( name ) {
if ( name === 'list autofill' && quill . scroll . whitelist != null && ! quill . scroll . whitelist [ 'list' ] ) {
return ;
}
if ( _this . options . bindings [ name ] ) {
_this . addBinding ( _this . options . bindings [ name ] ) ;
}
} ) ;
_this . addBinding ( { key : Keyboard . keys . ENTER , shiftKey : null } , handleEnter ) ;
_this . addBinding ( { key : Keyboard . keys . ENTER , metaKey : null , ctrlKey : null , altKey : null } , function ( ) { } ) ;
if ( /Firefox/i . test ( navigator . userAgent ) ) {
// Need to handle delete and backspace for Firefox in the general case #1171
_this . addBinding ( { key : Keyboard . keys . BACKSPACE } , { collapsed : true } , handleBackspace ) ;
_this . addBinding ( { key : Keyboard . keys . DELETE } , { collapsed : true } , handleDelete ) ;
} else {
_this . addBinding ( { key : Keyboard . keys . BACKSPACE } , { collapsed : true , prefix : /^.?$/ } , handleBackspace ) ;
_this . addBinding ( { key : Keyboard . keys . DELETE } , { collapsed : true , suffix : /^.?$/ } , handleDelete ) ;
}
_this . addBinding ( { key : Keyboard . keys . BACKSPACE } , { collapsed : false } , handleDeleteRange ) ;
_this . addBinding ( { key : Keyboard . keys . DELETE } , { collapsed : false } , handleDeleteRange ) ;
_this . addBinding ( { key : Keyboard . keys . BACKSPACE , altKey : null , ctrlKey : null , metaKey : null , shiftKey : null } , { collapsed : true , offset : 0 } , handleBackspace ) ;
_this . listen ( ) ;
return _this ;
}
_createClass ( Keyboard , [ {
key : 'addBinding' ,
value : function addBinding ( key ) {
var context = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
var handler = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : { } ;
var binding = normalize ( key ) ;
if ( binding == null || binding . key == null ) {
return debug . warn ( 'Attempted to add invalid keyboard binding' , binding ) ;
}
if ( typeof context === 'function' ) {
context = { handler : context } ;
}
if ( typeof handler === 'function' ) {
handler = { handler : handler } ;
}
binding = ( 0 , _extend2 . default ) ( binding , context , handler ) ;
this . bindings [ binding . key ] = this . bindings [ binding . key ] || [ ] ;
this . bindings [ binding . key ] . push ( binding ) ;
}
} , {
key : 'listen' ,
value : function listen ( ) {
var _this2 = this ;
this . quill . root . addEventListener ( 'keydown' , function ( evt ) {
if ( evt . defaultPrevented ) return ;
var which = evt . which || evt . keyCode ;
var bindings = ( _this2 . bindings [ which ] || [ ] ) . filter ( function ( binding ) {
return Keyboard . match ( evt , binding ) ;
} ) ;
if ( bindings . length === 0 ) return ;
var range = _this2 . quill . getSelection ( ) ;
if ( range == null || ! _this2 . quill . hasFocus ( ) ) return ;
var _quill$getLine = _this2 . quill . getLine ( range . index ) ,
_quill$getLine2 = _slicedToArray ( _quill$getLine , 2 ) ,
line = _quill$getLine2 [ 0 ] ,
offset = _quill$getLine2 [ 1 ] ;
var _quill$getLeaf = _this2 . quill . getLeaf ( range . index ) ,
_quill$getLeaf2 = _slicedToArray ( _quill$getLeaf , 2 ) ,
leafStart = _quill$getLeaf2 [ 0 ] ,
offsetStart = _quill$getLeaf2 [ 1 ] ;
var _ref = range . length === 0 ? [ leafStart , offsetStart ] : _this2 . quill . getLeaf ( range . index + range . length ) ,
_ref2 = _slicedToArray ( _ref , 2 ) ,
leafEnd = _ref2 [ 0 ] ,
offsetEnd = _ref2 [ 1 ] ;
var prefixText = leafStart instanceof _parchment2 . default . Text ? leafStart . value ( ) . slice ( 0 , offsetStart ) : '' ;
var suffixText = leafEnd instanceof _parchment2 . default . Text ? leafEnd . value ( ) . slice ( offsetEnd ) : '' ;
var curContext = {
collapsed : range . length === 0 ,
empty : range . length === 0 && line . length ( ) <= 1 ,
format : _this2 . quill . getFormat ( range ) ,
offset : offset ,
prefix : prefixText ,
suffix : suffixText
} ;
var prevented = bindings . some ( function ( binding ) {
if ( binding . collapsed != null && binding . collapsed !== curContext . collapsed ) return false ;
if ( binding . empty != null && binding . empty !== curContext . empty ) return false ;
if ( binding . offset != null && binding . offset !== curContext . offset ) return false ;
if ( Array . isArray ( binding . format ) ) {
// any format is present
if ( binding . format . every ( function ( name ) {
return curContext . format [ name ] == null ;
} ) ) {
return false ;
}
} else if ( _typeof ( binding . format ) === 'object' ) {
// all formats must match
if ( ! Object . keys ( binding . format ) . every ( function ( name ) {
if ( binding . format [ name ] === true ) return curContext . format [ name ] != null ;
if ( binding . format [ name ] === false ) return curContext . format [ name ] == null ;
return ( 0 , _deepEqual2 . default ) ( binding . format [ name ] , curContext . format [ name ] ) ;
} ) ) {
return false ;
}
}
if ( binding . prefix != null && ! binding . prefix . test ( curContext . prefix ) ) return false ;
if ( binding . suffix != null && ! binding . suffix . test ( curContext . suffix ) ) return false ;
return binding . handler . call ( _this2 , range , curContext ) !== true ;
} ) ;
if ( prevented ) {
evt . preventDefault ( ) ;
}
} ) ;
}
} ] ) ;
return Keyboard ;
} ( _module2 . default ) ;
Keyboard . keys = {
BACKSPACE : 8 ,
TAB : 9 ,
ENTER : 13 ,
ESCAPE : 27 ,
LEFT : 37 ,
UP : 38 ,
RIGHT : 39 ,
DOWN : 40 ,
DELETE : 46
} ;
Keyboard . DEFAULTS = {
bindings : {
'bold' : makeFormatHandler ( 'bold' ) ,
'italic' : makeFormatHandler ( 'italic' ) ,
'underline' : makeFormatHandler ( 'underline' ) ,
'indent' : {
// highlight tab or tab at beginning of list, indent or blockquote
key : Keyboard . keys . TAB ,
format : [ 'blockquote' , 'indent' , 'list' ] ,
handler : function handler ( range , context ) {
if ( context . collapsed && context . offset !== 0 ) return true ;
this . quill . format ( 'indent' , '+1' , _quill2 . default . sources . USER ) ;
}
} ,
'outdent' : {
key : Keyboard . keys . TAB ,
shiftKey : true ,
format : [ 'blockquote' , 'indent' , 'list' ] ,
// highlight tab or tab at beginning of list, indent or blockquote
handler : function handler ( range , context ) {
if ( context . collapsed && context . offset !== 0 ) return true ;
this . quill . format ( 'indent' , '-1' , _quill2 . default . sources . USER ) ;
}
} ,
'outdent backspace' : {
key : Keyboard . keys . BACKSPACE ,
collapsed : true ,
shiftKey : null ,
metaKey : null ,
ctrlKey : null ,
altKey : null ,
format : [ 'indent' , 'list' ] ,
offset : 0 ,
handler : function handler ( range , context ) {
if ( context . format . indent != null ) {
this . quill . format ( 'indent' , '-1' , _quill2 . default . sources . USER ) ;
} else if ( context . format . list != null ) {
this . quill . format ( 'list' , false , _quill2 . default . sources . USER ) ;
}
}
} ,
'indent code-block' : makeCodeBlockHandler ( true ) ,
'outdent code-block' : makeCodeBlockHandler ( false ) ,
'remove tab' : {
key : Keyboard . keys . TAB ,
shiftKey : true ,
collapsed : true ,
prefix : /\t$/ ,
handler : function handler ( range ) {
this . quill . deleteText ( range . index - 1 , 1 , _quill2 . default . sources . USER ) ;
}
} ,
'tab' : {
key : Keyboard . keys . TAB ,
handler : function handler ( range ) {
this . quill . history . cutoff ( ) ;
var delta = new _quillDelta2 . default ( ) . retain ( range . index ) . delete ( range . length ) . insert ( '\t' ) ;
this . quill . updateContents ( delta , _quill2 . default . sources . USER ) ;
this . quill . history . cutoff ( ) ;
this . quill . setSelection ( range . index + 1 , _quill2 . default . sources . SILENT ) ;
}
} ,
'list empty enter' : {
key : Keyboard . keys . ENTER ,
collapsed : true ,
format : [ 'list' ] ,
empty : true ,
handler : function handler ( range , context ) {
this . quill . format ( 'list' , false , _quill2 . default . sources . USER ) ;
if ( context . format . indent ) {
this . quill . format ( 'indent' , false , _quill2 . default . sources . USER ) ;
}
}
} ,
'checklist enter' : {
key : Keyboard . keys . ENTER ,
collapsed : true ,
format : { list : 'checked' } ,
handler : function handler ( range ) {
var _quill$getLine3 = this . quill . getLine ( range . index ) ,
_quill$getLine4 = _slicedToArray ( _quill$getLine3 , 2 ) ,
line = _quill$getLine4 [ 0 ] ,
offset = _quill$getLine4 [ 1 ] ;
var formats = ( 0 , _extend2 . default ) ( { } , line . formats ( ) , { list : 'checked' } ) ;
var delta = new _quillDelta2 . default ( ) . retain ( range . index ) . insert ( '\n' , formats ) . retain ( line . length ( ) - offset - 1 ) . retain ( 1 , { list : 'unchecked' } ) ;
this . quill . updateContents ( delta , _quill2 . default . sources . USER ) ;
this . quill . setSelection ( range . index + 1 , _quill2 . default . sources . SILENT ) ;
this . quill . scrollIntoView ( ) ;
}
} ,
'header enter' : {
key : Keyboard . keys . ENTER ,
collapsed : true ,
format : [ 'header' ] ,
suffix : /^$/ ,
handler : function handler ( range , context ) {
var _quill$getLine5 = this . quill . getLine ( range . index ) ,
_quill$getLine6 = _slicedToArray ( _quill$getLine5 , 2 ) ,
line = _quill$getLine6 [ 0 ] ,
offset = _quill$getLine6 [ 1 ] ;
var delta = new _quillDelta2 . default ( ) . retain ( range . index ) . insert ( '\n' , context . format ) . retain ( line . length ( ) - offset - 1 ) . retain ( 1 , { header : null } ) ;
this . quill . updateContents ( delta , _quill2 . default . sources . USER ) ;
this . quill . setSelection ( range . index + 1 , _quill2 . default . sources . SILENT ) ;
this . quill . scrollIntoView ( ) ;
}
} ,
'list autofill' : {
key : ' ' ,
collapsed : true ,
format : { list : false } ,
prefix : /^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/ ,
handler : function handler ( range , context ) {
var length = context . prefix . length ;
var _quill$getLine7 = this . quill . getLine ( range . index ) ,
_quill$getLine8 = _slicedToArray ( _quill$getLine7 , 2 ) ,
line = _quill$getLine8 [ 0 ] ,
offset = _quill$getLine8 [ 1 ] ;
if ( offset > length ) return true ;
var value = void 0 ;
switch ( context . prefix . trim ( ) ) {
case '[]' : case '[ ]' :
value = 'unchecked' ;
break ;
case '[x]' :
value = 'checked' ;
break ;
case '-' : case '*' :
value = 'bullet' ;
break ;
default :
value = 'ordered' ;
}
this . quill . insertText ( range . index , ' ' , _quill2 . default . sources . USER ) ;
this . quill . history . cutoff ( ) ;
var delta = new _quillDelta2 . default ( ) . retain ( range . index - offset ) . delete ( length + 1 ) . retain ( line . length ( ) - 2 - offset ) . retain ( 1 , { list : value } ) ;
this . quill . updateContents ( delta , _quill2 . default . sources . USER ) ;
this . quill . history . cutoff ( ) ;
this . quill . setSelection ( range . index - length , _quill2 . default . sources . SILENT ) ;
}
} ,
'code exit' : {
key : Keyboard . keys . ENTER ,
collapsed : true ,
format : [ 'code-block' ] ,
prefix : /\n\n$/ ,
suffix : /^\s+$/ ,
handler : function handler ( range ) {
var _quill$getLine9 = this . quill . getLine ( range . index ) ,
_quill$getLine10 = _slicedToArray ( _quill$getLine9 , 2 ) ,
line = _quill$getLine10 [ 0 ] ,
offset = _quill$getLine10 [ 1 ] ;
var delta = new _quillDelta2 . default ( ) . retain ( range . index + line . length ( ) - offset - 2 ) . retain ( 1 , { 'code-block' : null } ) . delete ( 1 ) ;
this . quill . updateContents ( delta , _quill2 . default . sources . USER ) ;
}
} ,
'embed left' : makeEmbedArrowHandler ( Keyboard . keys . LEFT , false ) ,
'embed left shift' : makeEmbedArrowHandler ( Keyboard . keys . LEFT , true ) ,
'embed right' : makeEmbedArrowHandler ( Keyboard . keys . RIGHT , false ) ,
'embed right shift' : makeEmbedArrowHandler ( Keyboard . keys . RIGHT , true )
}
} ;
function makeEmbedArrowHandler ( key , shiftKey ) {
var _ref3 ;
var where = key === Keyboard . keys . LEFT ? 'prefix' : 'suffix' ;
return _ref3 = {
key : key ,
shiftKey : shiftKey ,
altKey : null
} , _defineProperty ( _ref3 , where , /^$/ ) , _defineProperty ( _ref3 , 'handler' , function handler ( range ) {
var index = range . index ;
if ( key === Keyboard . keys . RIGHT ) {
index += range . length + 1 ;
}
var _quill$getLeaf3 = this . quill . getLeaf ( index ) ,
_quill$getLeaf4 = _slicedToArray ( _quill$getLeaf3 , 1 ) ,
leaf = _quill$getLeaf4 [ 0 ] ;
if ( ! ( leaf instanceof _parchment2 . default . Embed ) ) return true ;
if ( key === Keyboard . keys . LEFT ) {
if ( shiftKey ) {
this . quill . setSelection ( range . index - 1 , range . length + 1 , _quill2 . default . sources . USER ) ;
} else {
this . quill . setSelection ( range . index - 1 , _quill2 . default . sources . USER ) ;
}
} else {
if ( shiftKey ) {
this . quill . setSelection ( range . index , range . length + 1 , _quill2 . default . sources . USER ) ;
} else {
this . quill . setSelection ( range . index + range . length + 1 , _quill2 . default . sources . USER ) ;
}
}
return false ;
} ) , _ref3 ;
}
function handleBackspace ( range , context ) {
if ( range . index === 0 || this . quill . getLength ( ) <= 1 ) return ;
var _quill$getLine11 = this . quill . getLine ( range . index ) ,
_quill$getLine12 = _slicedToArray ( _quill$getLine11 , 1 ) ,
line = _quill$getLine12 [ 0 ] ;
var formats = { } ;
if ( context . offset === 0 ) {
var _quill$getLine13 = this . quill . getLine ( range . index - 1 ) ,
_quill$getLine14 = _slicedToArray ( _quill$getLine13 , 1 ) ,
prev = _quill$getLine14 [ 0 ] ;
if ( prev != null && prev . length ( ) > 1 ) {
var curFormats = line . formats ( ) ;
var prevFormats = this . quill . getFormat ( range . index - 1 , 1 ) ;
formats = _op2 . default . attributes . diff ( curFormats , prevFormats ) || { } ;
}
}
// Check for astral symbols
var length = /[\uD800-\uDBFF][\uDC00-\uDFFF]$/ . test ( context . prefix ) ? 2 : 1 ;
this . quill . deleteText ( range . index - length , length , _quill2 . default . sources . USER ) ;
if ( Object . keys ( formats ) . length > 0 ) {
this . quill . formatLine ( range . index - length , length , formats , _quill2 . default . sources . USER ) ;
}
this . quill . focus ( ) ;
}
function handleDelete ( range , context ) {
// Check for astral symbols
var length = /^[\uD800-\uDBFF][\uDC00-\uDFFF]/ . test ( context . suffix ) ? 2 : 1 ;
if ( range . index >= this . quill . getLength ( ) - length ) return ;
var formats = { } ,
nextLength = 0 ;
var _quill$getLine15 = this . quill . getLine ( range . index ) ,
_quill$getLine16 = _slicedToArray ( _quill$getLine15 , 1 ) ,
line = _quill$getLine16 [ 0 ] ;
if ( context . offset >= line . length ( ) - 1 ) {
var _quill$getLine17 = this . quill . getLine ( range . index + 1 ) ,
_quill$getLine18 = _slicedToArray ( _quill$getLine17 , 1 ) ,
next = _quill$getLine18 [ 0 ] ;
if ( next ) {
var curFormats = line . formats ( ) ;
var nextFormats = this . quill . getFormat ( range . index , 1 ) ;
formats = _op2 . default . attributes . diff ( curFormats , nextFormats ) || { } ;
nextLength = next . length ( ) ;
}
}
this . quill . deleteText ( range . index , length , _quill2 . default . sources . USER ) ;
if ( Object . keys ( formats ) . length > 0 ) {
this . quill . formatLine ( range . index + nextLength - 1 , length , formats , _quill2 . default . sources . USER ) ;
}
}
function handleDeleteRange ( range ) {
var lines = this . quill . getLines ( range ) ;
var formats = { } ;
if ( lines . length > 1 ) {
var firstFormats = lines [ 0 ] . formats ( ) ;
var lastFormats = lines [ lines . length - 1 ] . formats ( ) ;
formats = _op2 . default . attributes . diff ( lastFormats , firstFormats ) || { } ;
}
this . quill . deleteText ( range , _quill2 . default . sources . USER ) ;
if ( Object . keys ( formats ) . length > 0 ) {
this . quill . formatLine ( range . index , 1 , formats , _quill2 . default . sources . USER ) ;
}
this . quill . setSelection ( range . index , _quill2 . default . sources . SILENT ) ;
this . quill . focus ( ) ;
}
function handleEnter ( range , context ) {
var _this3 = this ;
if ( range . length > 0 ) {
this . quill . scroll . deleteAt ( range . index , range . length ) ; // So we do not trigger text-change
}
var lineFormats = Object . keys ( context . format ) . reduce ( function ( lineFormats , format ) {
if ( _parchment2 . default . query ( format , _parchment2 . default . Scope . BLOCK ) && ! Array . isArray ( context . format [ format ] ) ) {
lineFormats [ format ] = context . format [ format ] ;
}
return lineFormats ;
} , { } ) ;
this . quill . insertText ( range . index , '\n' , lineFormats , _quill2 . default . sources . USER ) ;
// Earlier scroll.deleteAt might have messed up our selection,
// so insertText's built in selection preservation is not reliable
this . quill . setSelection ( range . index + 1 , _quill2 . default . sources . SILENT ) ;
this . quill . focus ( ) ;
Object . keys ( context . format ) . forEach ( function ( name ) {
if ( lineFormats [ name ] != null ) return ;
if ( Array . isArray ( context . format [ name ] ) ) return ;
if ( name === 'link' ) return ;
_this3 . quill . format ( name , context . format [ name ] , _quill2 . default . sources . USER ) ;
} ) ;
}
function makeCodeBlockHandler ( indent ) {
return {
key : Keyboard . keys . TAB ,
shiftKey : ! indent ,
format : { 'code-block' : true } ,
handler : function handler ( range ) {
var CodeBlock = _parchment2 . default . query ( 'code-block' ) ;
var index = range . index ,
length = range . length ;
var _quill$scroll$descend = this . quill . scroll . descendant ( CodeBlock , index ) ,
_quill$scroll$descend2 = _slicedToArray ( _quill$scroll$descend , 2 ) ,
block = _quill$scroll$descend2 [ 0 ] ,
offset = _quill$scroll$descend2 [ 1 ] ;
if ( block == null ) return ;
var scrollIndex = this . quill . getIndex ( block ) ;
var start = block . newlineIndex ( offset , true ) + 1 ;
var end = block . newlineIndex ( scrollIndex + offset + length ) ;
var lines = block . domNode . textContent . slice ( start , end ) . split ( '\n' ) ;
offset = 0 ;
lines . forEach ( function ( line , i ) {
if ( indent ) {
block . insertAt ( start + offset , CodeBlock . TAB ) ;
offset += CodeBlock . TAB . length ;
if ( i === 0 ) {
index += CodeBlock . TAB . length ;
} else {
length += CodeBlock . TAB . length ;
}
} else if ( line . startsWith ( CodeBlock . TAB ) ) {
block . deleteAt ( start + offset , CodeBlock . TAB . length ) ;
offset -= CodeBlock . TAB . length ;
if ( i === 0 ) {
index -= CodeBlock . TAB . length ;
} else {
length -= CodeBlock . TAB . length ;
}
}
offset += line . length + 1 ;
} ) ;
this . quill . update ( _quill2 . default . sources . USER ) ;
this . quill . setSelection ( index , length , _quill2 . default . sources . SILENT ) ;
}
} ;
}
function makeFormatHandler ( format ) {
return {
key : format [ 0 ] . toUpperCase ( ) ,
shortKey : true ,
handler : function handler ( range , context ) {
this . quill . format ( format , ! context . format [ format ] , _quill2 . default . sources . USER ) ;
}
} ;
}
function normalize ( binding ) {
if ( typeof binding === 'string' || typeof binding === 'number' ) {
return normalize ( { key : binding } ) ;
}
if ( ( typeof binding === 'undefined' ? 'undefined' : _typeof ( binding ) ) === 'object' ) {
binding = ( 0 , _clone2 . default ) ( binding , false ) ;
}
if ( typeof binding . key === 'string' ) {
if ( Keyboard . keys [ binding . key . toUpperCase ( ) ] != null ) {
binding . key = Keyboard . keys [ binding . key . toUpperCase ( ) ] ;
} else if ( binding . key . length === 1 ) {
binding . key = binding . key . toUpperCase ( ) . charCodeAt ( 0 ) ;
} else {
return null ;
}
}
if ( binding . shortKey ) {
binding [ SHORTKEY ] = binding . shortKey ;
delete binding . shortKey ;
}
return binding ;
}
exports . default = Keyboard ;
exports . SHORTKEY = SHORTKEY ;
/***/ } ) ,
/* 24 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _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" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _text = _ _webpack _require _ _ ( 7 ) ;
var _text2 = _interopRequireDefault ( _text ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var Cursor = function ( _Parchment$Embed ) {
_inherits ( Cursor , _Parchment$Embed ) ;
_createClass ( Cursor , null , [ {
key : 'value' ,
value : function value ( ) {
return undefined ;
}
} ] ) ;
function Cursor ( domNode , selection ) {
_classCallCheck ( this , Cursor ) ;
var _this = _possibleConstructorReturn ( this , ( Cursor . _ _proto _ _ || Object . getPrototypeOf ( Cursor ) ) . call ( this , domNode ) ) ;
_this . selection = selection ;
_this . textNode = document . createTextNode ( Cursor . CONTENTS ) ;
_this . domNode . appendChild ( _this . textNode ) ;
_this . _length = 0 ;
return _this ;
}
_createClass ( Cursor , [ {
key : 'detach' ,
value : function detach ( ) {
// super.detach() will also clear domNode.__blot
if ( this . parent != null ) this . parent . removeChild ( this ) ;
}
} , {
key : 'format' ,
value : function format ( name , value ) {
if ( this . _length !== 0 ) {
return _get ( Cursor . prototype . _ _proto _ _ || Object . getPrototypeOf ( Cursor . prototype ) , 'format' , this ) . call ( this , name , value ) ;
}
var target = this ,
index = 0 ;
while ( target != null && target . statics . scope !== _parchment2 . default . Scope . BLOCK _BLOT ) {
index += target . offset ( target . parent ) ;
target = target . parent ;
}
if ( target != null ) {
this . _length = Cursor . CONTENTS . length ;
target . optimize ( ) ;
target . formatAt ( index , Cursor . CONTENTS . length , name , value ) ;
this . _length = 0 ;
}
}
} , {
key : 'index' ,
value : function index ( node , offset ) {
if ( node === this . textNode ) return 0 ;
return _get ( Cursor . prototype . _ _proto _ _ || Object . getPrototypeOf ( Cursor . prototype ) , 'index' , this ) . call ( this , node , offset ) ;
}
} , {
key : 'length' ,
value : function length ( ) {
return this . _length ;
}
} , {
key : 'position' ,
value : function position ( ) {
return [ this . textNode , this . textNode . data . length ] ;
}
} , {
key : 'remove' ,
value : function remove ( ) {
_get ( Cursor . prototype . _ _proto _ _ || Object . getPrototypeOf ( Cursor . prototype ) , 'remove' , this ) . call ( this ) ;
this . parent = null ;
}
} , {
key : 'restore' ,
value : function restore ( ) {
if ( this . selection . composing || this . parent == null ) return ;
var textNode = this . textNode ;
var range = this . selection . getNativeRange ( ) ;
var restoreText = void 0 ,
start = void 0 ,
end = void 0 ;
if ( range != null && range . start . node === textNode && range . end . node === textNode ) {
var _ref = [ textNode , range . start . offset , range . end . offset ] ;
restoreText = _ref [ 0 ] ;
start = _ref [ 1 ] ;
end = _ref [ 2 ] ;
}
// Link format will insert text outside of anchor tag
while ( this . domNode . lastChild != null && this . domNode . lastChild !== this . textNode ) {
this . domNode . parentNode . insertBefore ( this . domNode . lastChild , this . domNode ) ;
}
if ( this . textNode . data !== Cursor . CONTENTS ) {
var text = this . textNode . data . split ( Cursor . CONTENTS ) . join ( '' ) ;
if ( this . next instanceof _text2 . default ) {
restoreText = this . next . domNode ;
this . next . insertAt ( 0 , text ) ;
this . textNode . data = Cursor . CONTENTS ;
} else {
this . textNode . data = text ;
this . parent . insertBefore ( _parchment2 . default . create ( this . textNode ) , this ) ;
this . textNode = document . createTextNode ( Cursor . CONTENTS ) ;
this . domNode . appendChild ( this . textNode ) ;
}
}
this . remove ( ) ;
if ( start != null ) {
var _map = [ start , end ] . map ( function ( offset ) {
return Math . max ( 0 , Math . min ( restoreText . data . length , offset - 1 ) ) ;
} ) ;
var _map2 = _slicedToArray ( _map , 2 ) ;
start = _map2 [ 0 ] ;
end = _map2 [ 1 ] ;
return {
startNode : restoreText ,
startOffset : start ,
endNode : restoreText ,
endOffset : end
} ;
}
}
} , {
key : 'update' ,
value : function update ( mutations , context ) {
var _this2 = this ;
if ( mutations . some ( function ( mutation ) {
return mutation . type === 'characterData' && mutation . target === _this2 . textNode ;
} ) ) {
var range = this . restore ( ) ;
if ( range ) context . range = range ;
}
}
} , {
key : 'value' ,
value : function value ( ) {
return '' ;
}
} ] ) ;
return Cursor ;
} ( _parchment2 . default . Embed ) ;
Cursor . blotName = 'cursor' ;
Cursor . className = 'ql-cursor' ;
Cursor . tagName = 'span' ;
Cursor . CONTENTS = '\uFEFF' ; // Zero width no break space
exports . default = Cursor ;
/***/ } ) ,
/* 25 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _block = _ _webpack _require _ _ ( 4 ) ;
var _block2 = _interopRequireDefault ( _block ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var Container = function ( _Parchment$Container ) {
_inherits ( Container , _Parchment$Container ) ;
function Container ( ) {
_classCallCheck ( this , Container ) ;
return _possibleConstructorReturn ( this , ( Container . _ _proto _ _ || Object . getPrototypeOf ( Container ) ) . apply ( this , arguments ) ) ;
}
return Container ;
} ( _parchment2 . default . Container ) ;
Container . allowedChildren = [ _block2 . default , _block . BlockEmbed , Container ] ;
exports . default = Container ;
/***/ } ) ,
/* 26 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . ColorStyle = exports . ColorClass = exports . ColorAttributor = undefined ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ColorAttributor = function ( _Parchment$Attributor ) {
_inherits ( ColorAttributor , _Parchment$Attributor ) ;
function ColorAttributor ( ) {
_classCallCheck ( this , ColorAttributor ) ;
return _possibleConstructorReturn ( this , ( ColorAttributor . _ _proto _ _ || Object . getPrototypeOf ( ColorAttributor ) ) . apply ( this , arguments ) ) ;
}
_createClass ( ColorAttributor , [ {
key : 'value' ,
value : function value ( domNode ) {
var value = _get ( ColorAttributor . prototype . _ _proto _ _ || Object . getPrototypeOf ( ColorAttributor . prototype ) , 'value' , this ) . call ( this , domNode ) ;
if ( ! value . startsWith ( 'rgb(' ) ) return value ;
value = value . replace ( /^[^\d]+/ , '' ) . replace ( /[^\d]+$/ , '' ) ;
return '#' + value . split ( ',' ) . map ( function ( component ) {
return ( '00' + parseInt ( component ) . toString ( 16 ) ) . slice ( - 2 ) ;
} ) . join ( '' ) ;
}
} ] ) ;
return ColorAttributor ;
} ( _parchment2 . default . Attributor . Style ) ;
var ColorClass = new _parchment2 . default . Attributor . Class ( 'color' , 'ql-color' , {
scope : _parchment2 . default . Scope . INLINE
} ) ;
var ColorStyle = new ColorAttributor ( 'color' , 'color' , {
scope : _parchment2 . default . Scope . INLINE
} ) ;
exports . ColorAttributor = ColorAttributor ;
exports . ColorClass = ColorClass ;
exports . ColorStyle = ColorStyle ;
/***/ } ) ,
/* 27 */ ,
/* 28 */ ,
/* 29 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _quill = _ _webpack _require _ _ ( 5 ) ;
var _quill2 = _interopRequireDefault ( _quill ) ;
var _block = _ _webpack _require _ _ ( 4 ) ;
var _block2 = _interopRequireDefault ( _block ) ;
var _break = _ _webpack _require _ _ ( 16 ) ;
var _break2 = _interopRequireDefault ( _break ) ;
var _container = _ _webpack _require _ _ ( 25 ) ;
var _container2 = _interopRequireDefault ( _container ) ;
var _cursor = _ _webpack _require _ _ ( 24 ) ;
var _cursor2 = _interopRequireDefault ( _cursor ) ;
var _embed = _ _webpack _require _ _ ( 35 ) ;
var _embed2 = _interopRequireDefault ( _embed ) ;
var _inline = _ _webpack _require _ _ ( 6 ) ;
var _inline2 = _interopRequireDefault ( _inline ) ;
var _scroll = _ _webpack _require _ _ ( 22 ) ;
var _scroll2 = _interopRequireDefault ( _scroll ) ;
var _text = _ _webpack _require _ _ ( 7 ) ;
var _text2 = _interopRequireDefault ( _text ) ;
var _clipboard = _ _webpack _require _ _ ( 55 ) ;
var _clipboard2 = _interopRequireDefault ( _clipboard ) ;
var _history = _ _webpack _require _ _ ( 42 ) ;
var _history2 = _interopRequireDefault ( _history ) ;
var _keyboard = _ _webpack _require _ _ ( 23 ) ;
var _keyboard2 = _interopRequireDefault ( _keyboard ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
_quill2 . default . register ( {
'blots/block' : _block2 . default ,
'blots/block/embed' : _block . BlockEmbed ,
'blots/break' : _break2 . default ,
'blots/container' : _container2 . default ,
'blots/cursor' : _cursor2 . default ,
'blots/embed' : _embed2 . default ,
'blots/inline' : _inline2 . default ,
'blots/scroll' : _scroll2 . default ,
'blots/text' : _text2 . default ,
'modules/clipboard' : _clipboard2 . default ,
'modules/history' : _history2 . default ,
'modules/keyboard' : _keyboard2 . default
} ) ;
_parchment2 . default . register ( _block2 . default , _break2 . default , _cursor2 . default , _inline2 . default , _scroll2 . default , _text2 . default ) ;
exports . default = _quill2 . default ;
/***/ } ) ,
/* 30 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var ShadowBlot = /** @class */ ( function ( ) {
function ShadowBlot ( domNode ) {
this . domNode = domNode ;
// @ts-ignore
this . domNode [ Registry . DATA _KEY ] = { blot : this } ;
}
Object . defineProperty ( ShadowBlot . prototype , "statics" , {
// Hack for accessing inherited static methods
get : function ( ) {
return this . constructor ;
} ,
enumerable : true ,
configurable : true
} ) ;
ShadowBlot . create = function ( value ) {
if ( this . tagName == null ) {
throw new Registry . ParchmentError ( 'Blot definition missing tagName' ) ;
}
var node ;
if ( Array . isArray ( this . tagName ) ) {
if ( typeof value === 'string' ) {
value = value . toUpperCase ( ) ;
if ( parseInt ( value ) . toString ( ) === value ) {
value = parseInt ( value ) ;
}
}
if ( typeof value === 'number' ) {
node = document . createElement ( this . tagName [ value - 1 ] ) ;
}
else if ( this . tagName . indexOf ( value ) > - 1 ) {
node = document . createElement ( value ) ;
}
else {
node = document . createElement ( this . tagName [ 0 ] ) ;
}
}
else {
node = document . createElement ( this . tagName ) ;
}
if ( this . className ) {
node . classList . add ( this . className ) ;
}
return node ;
} ;
ShadowBlot . prototype . attach = function ( ) {
if ( this . parent != null ) {
this . scroll = this . parent . scroll ;
}
} ;
ShadowBlot . prototype . clone = function ( ) {
var domNode = this . domNode . cloneNode ( false ) ;
return Registry . create ( domNode ) ;
} ;
ShadowBlot . prototype . detach = function ( ) {
if ( this . parent != null )
this . parent . removeChild ( this ) ;
// @ts-ignore
delete this . domNode [ Registry . DATA _KEY ] ;
} ;
ShadowBlot . prototype . deleteAt = function ( index , length ) {
var blot = this . isolate ( index , length ) ;
blot . remove ( ) ;
} ;
ShadowBlot . prototype . formatAt = function ( index , length , name , value ) {
var blot = this . isolate ( index , length ) ;
if ( Registry . query ( name , Registry . Scope . BLOT ) != null && value ) {
blot . wrap ( name , value ) ;
}
else if ( Registry . query ( name , Registry . Scope . ATTRIBUTE ) != null ) {
var parent = Registry . create ( this . statics . scope ) ;
blot . wrap ( parent ) ;
parent . format ( name , value ) ;
}
} ;
ShadowBlot . prototype . insertAt = function ( index , value , def ) {
var blot = def == null ? Registry . create ( 'text' , value ) : Registry . create ( value , def ) ;
var ref = this . split ( index ) ;
this . parent . insertBefore ( blot , ref ) ;
} ;
ShadowBlot . prototype . insertInto = function ( parentBlot , refBlot ) {
if ( refBlot === void 0 ) { refBlot = null ; }
if ( this . parent != null ) {
this . parent . children . remove ( this ) ;
}
var refDomNode = null ;
parentBlot . children . insertBefore ( this , refBlot ) ;
if ( refBlot != null ) {
refDomNode = refBlot . domNode ;
}
if ( this . domNode . parentNode != parentBlot . domNode ||
this . domNode . nextSibling != refDomNode ) {
parentBlot . domNode . insertBefore ( this . domNode , refDomNode ) ;
}
this . parent = parentBlot ;
this . attach ( ) ;
} ;
ShadowBlot . prototype . isolate = function ( index , length ) {
var target = this . split ( index ) ;
target . split ( length ) ;
return target ;
} ;
ShadowBlot . prototype . length = function ( ) {
return 1 ;
} ;
ShadowBlot . prototype . offset = function ( root ) {
if ( root === void 0 ) { root = this . parent ; }
if ( this . parent == null || this == root )
return 0 ;
return this . parent . children . offset ( this ) + this . parent . offset ( root ) ;
} ;
ShadowBlot . prototype . optimize = function ( context ) {
// TODO clean up once we use WeakMap
// @ts-ignore
if ( this . domNode [ Registry . DATA _KEY ] != null ) {
// @ts-ignore
delete this . domNode [ Registry . DATA _KEY ] . mutations ;
}
} ;
ShadowBlot . prototype . remove = function ( ) {
if ( this . domNode . parentNode != null ) {
this . domNode . parentNode . removeChild ( this . domNode ) ;
}
this . detach ( ) ;
} ;
ShadowBlot . prototype . replace = function ( target ) {
if ( target . parent == null )
return ;
target . parent . insertBefore ( this , target . next ) ;
target . remove ( ) ;
} ;
ShadowBlot . prototype . replaceWith = function ( name , value ) {
var replacement = typeof name === 'string' ? Registry . create ( name , value ) : name ;
replacement . replace ( this ) ;
return replacement ;
} ;
ShadowBlot . prototype . split = function ( index , force ) {
return index === 0 ? this : this . next ;
} ;
ShadowBlot . prototype . update = function ( mutations , context ) {
// Nothing to do by default
} ;
ShadowBlot . prototype . wrap = function ( name , value ) {
var wrapper = typeof name === 'string' ? Registry . create ( name , value ) : name ;
if ( this . parent != null ) {
this . parent . insertBefore ( wrapper , this . next ) ;
}
wrapper . appendChild ( this ) ;
return wrapper ;
} ;
ShadowBlot . blotName = 'abstract' ;
return ShadowBlot ;
} ( ) ) ;
exports . default = ShadowBlot ;
/***/ } ) ,
/* 31 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var attributor _1 = _ _webpack _require _ _ ( 12 ) ;
var class _1 = _ _webpack _require _ _ ( 32 ) ;
var style _1 = _ _webpack _require _ _ ( 33 ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var AttributorStore = /** @class */ ( function ( ) {
function AttributorStore ( domNode ) {
this . attributes = { } ;
this . domNode = domNode ;
this . build ( ) ;
}
AttributorStore . prototype . attribute = function ( attribute , value ) {
// verb
if ( value ) {
if ( attribute . add ( this . domNode , value ) ) {
if ( attribute . value ( this . domNode ) != null ) {
this . attributes [ attribute . attrName ] = attribute ;
}
else {
delete this . attributes [ attribute . attrName ] ;
}
}
}
else {
attribute . remove ( this . domNode ) ;
delete this . attributes [ attribute . attrName ] ;
}
} ;
AttributorStore . prototype . build = function ( ) {
var _this = this ;
this . attributes = { } ;
var attributes = attributor _1 . default . keys ( this . domNode ) ;
var classes = class _1 . default . keys ( this . domNode ) ;
var styles = style _1 . default . keys ( this . domNode ) ;
attributes
. concat ( classes )
. concat ( styles )
. forEach ( function ( name ) {
var attr = Registry . query ( name , Registry . Scope . ATTRIBUTE ) ;
if ( attr instanceof attributor _1 . default ) {
_this . attributes [ attr . attrName ] = attr ;
}
} ) ;
} ;
AttributorStore . prototype . copy = function ( target ) {
var _this = this ;
Object . keys ( this . attributes ) . forEach ( function ( key ) {
var value = _this . attributes [ key ] . value ( _this . domNode ) ;
target . format ( key , value ) ;
} ) ;
} ;
AttributorStore . prototype . move = function ( target ) {
var _this = this ;
this . copy ( target ) ;
Object . keys ( this . attributes ) . forEach ( function ( key ) {
_this . attributes [ key ] . remove ( _this . domNode ) ;
} ) ;
this . attributes = { } ;
} ;
AttributorStore . prototype . values = function ( ) {
var _this = this ;
return Object . keys ( this . attributes ) . reduce ( function ( attributes , name ) {
attributes [ name ] = _this . attributes [ name ] . value ( _this . domNode ) ;
return attributes ;
} , { } ) ;
} ;
return AttributorStore ;
} ( ) ) ;
exports . default = AttributorStore ;
/***/ } ) ,
/* 32 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var attributor _1 = _ _webpack _require _ _ ( 12 ) ;
function match ( node , prefix ) {
var className = node . getAttribute ( 'class' ) || '' ;
return className . split ( /\s+/ ) . filter ( function ( name ) {
return name . indexOf ( prefix + "-" ) === 0 ;
} ) ;
}
var ClassAttributor = /** @class */ ( function ( _super ) {
_ _extends ( ClassAttributor , _super ) ;
function ClassAttributor ( ) {
return _super !== null && _super . apply ( this , arguments ) || this ;
}
ClassAttributor . keys = function ( node ) {
return ( node . getAttribute ( 'class' ) || '' ) . split ( /\s+/ ) . map ( function ( name ) {
return name
. split ( '-' )
. slice ( 0 , - 1 )
. join ( '-' ) ;
} ) ;
} ;
ClassAttributor . prototype . add = function ( node , value ) {
if ( ! this . canAdd ( node , value ) )
return false ;
this . remove ( node ) ;
node . classList . add ( this . keyName + "-" + value ) ;
return true ;
} ;
ClassAttributor . prototype . remove = function ( node ) {
var matches = match ( node , this . keyName ) ;
matches . forEach ( function ( name ) {
node . classList . remove ( name ) ;
} ) ;
if ( node . classList . length === 0 ) {
node . removeAttribute ( 'class' ) ;
}
} ;
ClassAttributor . prototype . value = function ( node ) {
var result = match ( node , this . keyName ) [ 0 ] || '' ;
var value = result . slice ( this . keyName . length + 1 ) ; // +1 for hyphen
return this . canAdd ( node , value ) ? value : '' ;
} ;
return ClassAttributor ;
} ( attributor _1 . default ) ) ;
exports . default = ClassAttributor ;
/***/ } ) ,
/* 33 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var attributor _1 = _ _webpack _require _ _ ( 12 ) ;
function camelize ( name ) {
var parts = name . split ( '-' ) ;
var rest = parts
. slice ( 1 )
. map ( function ( part ) {
return part [ 0 ] . toUpperCase ( ) + part . slice ( 1 ) ;
} )
. join ( '' ) ;
return parts [ 0 ] + rest ;
}
var StyleAttributor = /** @class */ ( function ( _super ) {
_ _extends ( StyleAttributor , _super ) ;
function StyleAttributor ( ) {
return _super !== null && _super . apply ( this , arguments ) || this ;
}
StyleAttributor . keys = function ( node ) {
return ( node . getAttribute ( 'style' ) || '' ) . split ( ';' ) . map ( function ( value ) {
var arr = value . split ( ':' ) ;
return arr [ 0 ] . trim ( ) ;
} ) ;
} ;
StyleAttributor . prototype . add = function ( node , value ) {
if ( ! this . canAdd ( node , value ) )
return false ;
// @ts-ignore
node . style [ camelize ( this . keyName ) ] = value ;
return true ;
} ;
StyleAttributor . prototype . remove = function ( node ) {
// @ts-ignore
node . style [ camelize ( this . keyName ) ] = '' ;
if ( ! node . getAttribute ( 'style' ) ) {
node . removeAttribute ( 'style' ) ;
}
} ;
StyleAttributor . prototype . value = function ( node ) {
// @ts-ignore
var value = node . style [ camelize ( this . keyName ) ] ;
return this . canAdd ( node , value ) ? value : '' ;
} ;
return StyleAttributor ;
} ( attributor _1 . default ) ) ;
exports . default = StyleAttributor ;
/***/ } ) ,
/* 34 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var Theme = function ( ) {
function Theme ( quill , options ) {
_classCallCheck ( this , Theme ) ;
this . quill = quill ;
this . options = options ;
this . modules = { } ;
}
_createClass ( Theme , [ {
key : 'init' ,
value : function init ( ) {
var _this = this ;
Object . keys ( this . options . modules ) . forEach ( function ( name ) {
if ( _this . modules [ name ] == null ) {
_this . addModule ( name ) ;
}
} ) ;
}
} , {
key : 'addModule' ,
value : function addModule ( name ) {
var moduleClass = this . quill . constructor . import ( 'modules/' + name ) ;
this . modules [ name ] = new moduleClass ( this . quill , this . options . modules [ name ] || { } ) ;
return this . modules [ name ] ;
}
} ] ) ;
return Theme ;
} ( ) ;
Theme . DEFAULTS = {
modules : { }
} ;
Theme . themes = {
'default' : Theme
} ;
exports . default = Theme ;
/***/ } ) ,
/* 35 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _text = _ _webpack _require _ _ ( 7 ) ;
var _text2 = _interopRequireDefault ( _text ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var GUARD _TEXT = '\uFEFF' ;
var Embed = function ( _Parchment$Embed ) {
_inherits ( Embed , _Parchment$Embed ) ;
function Embed ( node ) {
_classCallCheck ( this , Embed ) ;
var _this = _possibleConstructorReturn ( this , ( Embed . _ _proto _ _ || Object . getPrototypeOf ( Embed ) ) . call ( this , node ) ) ;
_this . contentNode = document . createElement ( 'span' ) ;
_this . contentNode . setAttribute ( 'contenteditable' , false ) ;
[ ] . slice . call ( _this . domNode . childNodes ) . forEach ( function ( childNode ) {
_this . contentNode . appendChild ( childNode ) ;
} ) ;
_this . leftGuard = document . createTextNode ( GUARD _TEXT ) ;
_this . rightGuard = document . createTextNode ( GUARD _TEXT ) ;
_this . domNode . appendChild ( _this . leftGuard ) ;
_this . domNode . appendChild ( _this . contentNode ) ;
_this . domNode . appendChild ( _this . rightGuard ) ;
return _this ;
}
_createClass ( Embed , [ {
key : 'index' ,
value : function index ( node , offset ) {
if ( node === this . leftGuard ) return 0 ;
if ( node === this . rightGuard ) return 1 ;
return _get ( Embed . prototype . _ _proto _ _ || Object . getPrototypeOf ( Embed . prototype ) , 'index' , this ) . call ( this , node , offset ) ;
}
} , {
key : 'restore' ,
value : function restore ( node ) {
var range = void 0 ,
textNode = void 0 ;
var text = node . data . split ( GUARD _TEXT ) . join ( '' ) ;
if ( node === this . leftGuard ) {
if ( this . prev instanceof _text2 . default ) {
var prevLength = this . prev . length ( ) ;
this . prev . insertAt ( prevLength , text ) ;
range = {
startNode : this . prev . domNode ,
startOffset : prevLength + text . length
} ;
} else {
textNode = document . createTextNode ( text ) ;
this . parent . insertBefore ( _parchment2 . default . create ( textNode ) , this ) ;
range = {
startNode : textNode ,
startOffset : text . length
} ;
}
} else if ( node === this . rightGuard ) {
if ( this . next instanceof _text2 . default ) {
this . next . insertAt ( 0 , text ) ;
range = {
startNode : this . next . domNode ,
startOffset : text . length
} ;
} else {
textNode = document . createTextNode ( text ) ;
this . parent . insertBefore ( _parchment2 . default . create ( textNode ) , this . next ) ;
range = {
startNode : textNode ,
startOffset : text . length
} ;
}
}
node . data = GUARD _TEXT ;
return range ;
}
} , {
key : 'update' ,
value : function update ( mutations , context ) {
var _this2 = this ;
mutations . forEach ( function ( mutation ) {
if ( mutation . type === 'characterData' && ( mutation . target === _this2 . leftGuard || mutation . target === _this2 . rightGuard ) ) {
var range = _this2 . restore ( mutation . target ) ;
if ( range ) context . range = range ;
}
} ) ;
}
} ] ) ;
return Embed ;
} ( _parchment2 . default . Embed ) ;
exports . default = Embed ;
/***/ } ) ,
/* 36 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . AlignStyle = exports . AlignClass = exports . AlignAttribute = undefined ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var config = {
scope : _parchment2 . default . Scope . BLOCK ,
whitelist : [ 'right' , 'center' , 'justify' ]
} ;
var AlignAttribute = new _parchment2 . default . Attributor . Attribute ( 'align' , 'align' , config ) ;
var AlignClass = new _parchment2 . default . Attributor . Class ( 'align' , 'ql-align' , config ) ;
var AlignStyle = new _parchment2 . default . Attributor . Style ( 'align' , 'text-align' , config ) ;
exports . AlignAttribute = AlignAttribute ;
exports . AlignClass = AlignClass ;
exports . AlignStyle = AlignStyle ;
/***/ } ) ,
/* 37 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . BackgroundStyle = exports . BackgroundClass = undefined ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _color = _ _webpack _require _ _ ( 26 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var BackgroundClass = new _parchment2 . default . Attributor . Class ( 'background' , 'ql-bg' , {
scope : _parchment2 . default . Scope . INLINE
} ) ;
var BackgroundStyle = new _color . ColorAttributor ( 'background' , 'background-color' , {
scope : _parchment2 . default . Scope . INLINE
} ) ;
exports . BackgroundClass = BackgroundClass ;
exports . BackgroundStyle = BackgroundStyle ;
/***/ } ) ,
/* 38 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . DirectionStyle = exports . DirectionClass = exports . DirectionAttribute = undefined ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var config = {
scope : _parchment2 . default . Scope . BLOCK ,
whitelist : [ 'rtl' ]
} ;
var DirectionAttribute = new _parchment2 . default . Attributor . Attribute ( 'direction' , 'dir' , config ) ;
var DirectionClass = new _parchment2 . default . Attributor . Class ( 'direction' , 'ql-direction' , config ) ;
var DirectionStyle = new _parchment2 . default . Attributor . Style ( 'direction' , 'direction' , config ) ;
exports . DirectionAttribute = DirectionAttribute ;
exports . DirectionClass = DirectionClass ;
exports . DirectionStyle = DirectionStyle ;
/***/ } ) ,
/* 39 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . FontClass = exports . FontStyle = undefined ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _get = function get ( object , property , receiver ) { if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) { var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) { return undefined ; } else { return get ( parent , property , receiver ) ; } } else if ( "value" in desc ) { return desc . value ; } else { var getter = desc . get ; if ( getter === undefined ) { return undefined ; } return getter . call ( receiver ) ; } } ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var config = {
scope : _parchment2 . default . Scope . INLINE ,
whitelist : [ 'serif' , 'monospace' ]
} ;
var FontClass = new _parchment2 . default . Attributor . Class ( 'font' , 'ql-font' , config ) ;
var FontStyleAttributor = function ( _Parchment$Attributor ) {
_inherits ( FontStyleAttributor , _Parchment$Attributor ) ;
function FontStyleAttributor ( ) {
_classCallCheck ( this , FontStyleAttributor ) ;
return _possibleConstructorReturn ( this , ( FontStyleAttributor . _ _proto _ _ || Object . getPrototypeOf ( FontStyleAttributor ) ) . apply ( this , arguments ) ) ;
}
_createClass ( FontStyleAttributor , [ {
key : 'value' ,
value : function value ( node ) {
return _get ( FontStyleAttributor . prototype . _ _proto _ _ || Object . getPrototypeOf ( FontStyleAttributor . prototype ) , 'value' , this ) . call ( this , node ) . replace ( /["']/g , '' ) ;
}
} ] ) ;
return FontStyleAttributor ;
} ( _parchment2 . default . Attributor . Style ) ;
var FontStyle = new FontStyleAttributor ( 'font' , 'font-family' , config ) ;
exports . FontStyle = FontStyle ;
exports . FontClass = FontClass ;
/***/ } ) ,
/* 40 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . SizeStyle = exports . SizeClass = undefined ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var SizeClass = new _parchment2 . default . Attributor . Class ( 'size' , 'ql-size' , {
scope : _parchment2 . default . Scope . INLINE ,
whitelist : [ 'small' , 'large' , 'huge' ]
} ) ;
var SizeStyle = new _parchment2 . default . Attributor . Style ( 'size' , 'font-size' , {
scope : _parchment2 . default . Scope . INLINE ,
whitelist : [ '10px' , '18px' , '32px' ]
} ) ;
exports . SizeClass = SizeClass ;
exports . SizeStyle = SizeStyle ;
/***/ } ) ,
/* 41 */ ,
/* 42 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . getLastChangeIndex = exports . default = undefined ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _quill = _ _webpack _require _ _ ( 5 ) ;
var _quill2 = _interopRequireDefault ( _quill ) ;
var _module = _ _webpack _require _ _ ( 9 ) ;
var _module2 = _interopRequireDefault ( _module ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var History = function ( _Module ) {
_inherits ( History , _Module ) ;
function History ( quill , options ) {
_classCallCheck ( this , History ) ;
var _this = _possibleConstructorReturn ( this , ( History . _ _proto _ _ || Object . getPrototypeOf ( History ) ) . call ( this , quill , options ) ) ;
_this . lastRecorded = 0 ;
_this . ignoreChange = false ;
_this . clear ( ) ;
_this . quill . on ( _quill2 . default . events . EDITOR _CHANGE , function ( eventName , delta , oldDelta , source ) {
if ( eventName !== _quill2 . default . events . TEXT _CHANGE || _this . ignoreChange ) return ;
if ( ! _this . options . userOnly || source === _quill2 . default . sources . USER ) {
_this . record ( delta , oldDelta ) ;
} else {
_this . transform ( delta ) ;
}
} ) ;
_this . quill . keyboard . addBinding ( { key : 'Z' , shortKey : true } , _this . undo . bind ( _this ) ) ;
_this . quill . keyboard . addBinding ( { key : 'Z' , shortKey : true , shiftKey : true } , _this . redo . bind ( _this ) ) ;
if ( /Win/i . test ( navigator . platform ) ) {
_this . quill . keyboard . addBinding ( { key : 'Y' , shortKey : true } , _this . redo . bind ( _this ) ) ;
}
return _this ;
}
_createClass ( History , [ {
key : 'change' ,
value : function change ( source , dest ) {
if ( this . stack [ source ] . length === 0 ) return ;
var delta = this . stack [ source ] . pop ( ) ;
this . stack [ dest ] . push ( delta ) ;
this . lastRecorded = 0 ;
this . ignoreChange = true ;
this . quill . updateContents ( delta [ source ] , _quill2 . default . sources . USER ) ;
this . ignoreChange = false ;
var index = getLastChangeIndex ( delta [ source ] ) ;
this . quill . setSelection ( index ) ;
}
} , {
key : 'clear' ,
value : function clear ( ) {
this . stack = { undo : [ ] , redo : [ ] } ;
}
} , {
key : 'cutoff' ,
value : function cutoff ( ) {
this . lastRecorded = 0 ;
}
} , {
key : 'record' ,
value : function record ( changeDelta , oldDelta ) {
if ( changeDelta . ops . length === 0 ) return ;
this . stack . redo = [ ] ;
var undoDelta = this . quill . getContents ( ) . diff ( oldDelta ) ;
var timestamp = Date . now ( ) ;
if ( this . lastRecorded + this . options . delay > timestamp && this . stack . undo . length > 0 ) {
var delta = this . stack . undo . pop ( ) ;
undoDelta = undoDelta . compose ( delta . undo ) ;
changeDelta = delta . redo . compose ( changeDelta ) ;
} else {
this . lastRecorded = timestamp ;
}
this . stack . undo . push ( {
redo : changeDelta ,
undo : undoDelta
} ) ;
if ( this . stack . undo . length > this . options . maxStack ) {
this . stack . undo . shift ( ) ;
}
}
} , {
key : 'redo' ,
value : function redo ( ) {
this . change ( 'redo' , 'undo' ) ;
}
} , {
key : 'transform' ,
value : function transform ( delta ) {
this . stack . undo . forEach ( function ( change ) {
change . undo = delta . transform ( change . undo , true ) ;
change . redo = delta . transform ( change . redo , true ) ;
} ) ;
this . stack . redo . forEach ( function ( change ) {
change . undo = delta . transform ( change . undo , true ) ;
change . redo = delta . transform ( change . redo , true ) ;
} ) ;
}
} , {
key : 'undo' ,
value : function undo ( ) {
this . change ( 'undo' , 'redo' ) ;
}
} ] ) ;
return History ;
} ( _module2 . default ) ;
History . DEFAULTS = {
delay : 1000 ,
maxStack : 100 ,
userOnly : false
} ;
function endsWithNewlineChange ( delta ) {
var lastOp = delta . ops [ delta . ops . length - 1 ] ;
if ( lastOp == null ) return false ;
if ( lastOp . insert != null ) {
return typeof lastOp . insert === 'string' && lastOp . insert . endsWith ( '\n' ) ;
}
if ( lastOp . attributes != null ) {
return Object . keys ( lastOp . attributes ) . some ( function ( attr ) {
return _parchment2 . default . query ( attr , _parchment2 . default . Scope . BLOCK ) != null ;
} ) ;
}
return false ;
}
function getLastChangeIndex ( delta ) {
var deleteLength = delta . reduce ( function ( length , op ) {
length += op . delete || 0 ;
return length ;
} , 0 ) ;
var changeIndex = delta . length ( ) - deleteLength ;
if ( endsWithNewlineChange ( delta ) ) {
changeIndex -= 1 ;
}
return changeIndex ;
}
exports . default = History ;
exports . getLastChangeIndex = getLastChangeIndex ;
/***/ } ) ,
/* 43 */ ,
/* 44 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var LinkedList = /** @class */ ( function ( ) {
function LinkedList ( ) {
this . head = this . tail = null ;
this . length = 0 ;
}
LinkedList . prototype . append = function ( ) {
var nodes = [ ] ;
for ( var _i = 0 ; _i < arguments . length ; _i ++ ) {
nodes [ _i ] = arguments [ _i ] ;
}
this . insertBefore ( nodes [ 0 ] , null ) ;
if ( nodes . length > 1 ) {
this . append . apply ( this , nodes . slice ( 1 ) ) ;
}
} ;
LinkedList . prototype . contains = function ( node ) {
var cur , next = this . iterator ( ) ;
while ( ( cur = next ( ) ) ) {
if ( cur === node )
return true ;
}
return false ;
} ;
LinkedList . prototype . insertBefore = function ( node , refNode ) {
if ( ! node )
return ;
node . next = refNode ;
if ( refNode != null ) {
node . prev = refNode . prev ;
if ( refNode . prev != null ) {
refNode . prev . next = node ;
}
refNode . prev = node ;
if ( refNode === this . head ) {
this . head = node ;
}
}
else if ( this . tail != null ) {
this . tail . next = node ;
node . prev = this . tail ;
this . tail = node ;
}
else {
node . prev = null ;
this . head = this . tail = node ;
}
this . length += 1 ;
} ;
LinkedList . prototype . offset = function ( target ) {
var index = 0 , cur = this . head ;
while ( cur != null ) {
if ( cur === target )
return index ;
index += cur . length ( ) ;
cur = cur . next ;
}
return - 1 ;
} ;
LinkedList . prototype . remove = function ( node ) {
if ( ! this . contains ( node ) )
return ;
if ( node . prev != null )
node . prev . next = node . next ;
if ( node . next != null )
node . next . prev = node . prev ;
if ( node === this . head )
this . head = node . next ;
if ( node === this . tail )
this . tail = node . prev ;
this . length -= 1 ;
} ;
LinkedList . prototype . iterator = function ( curNode ) {
if ( curNode === void 0 ) { curNode = this . head ; }
// TODO use yield when we can
return function ( ) {
var ret = curNode ;
if ( curNode != null )
curNode = curNode . next ;
return ret ;
} ;
} ;
LinkedList . prototype . find = function ( index , inclusive ) {
if ( inclusive === void 0 ) { inclusive = false ; }
var cur , next = this . iterator ( ) ;
while ( ( cur = next ( ) ) ) {
var length = cur . length ( ) ;
if ( index < length ||
( inclusive && index === length && ( cur . next == null || cur . next . length ( ) !== 0 ) ) ) {
return [ cur , index ] ;
}
index -= length ;
}
return [ null , 0 ] ;
} ;
LinkedList . prototype . forEach = function ( callback ) {
var cur , next = this . iterator ( ) ;
while ( ( cur = next ( ) ) ) {
callback ( cur ) ;
}
} ;
LinkedList . prototype . forEachAt = function ( index , length , callback ) {
if ( length <= 0 )
return ;
var _a = this . find ( index ) , startNode = _a [ 0 ] , offset = _a [ 1 ] ;
var cur , curIndex = index - offset , next = this . iterator ( startNode ) ;
while ( ( cur = next ( ) ) && curIndex < index + length ) {
var curLength = cur . length ( ) ;
if ( index > curIndex ) {
callback ( cur , index - curIndex , Math . min ( length , curIndex + curLength - index ) ) ;
}
else {
callback ( cur , 0 , Math . min ( curLength , index + length - curIndex ) ) ;
}
curIndex += curLength ;
}
} ;
LinkedList . prototype . map = function ( callback ) {
return this . reduce ( function ( memo , cur ) {
memo . push ( callback ( cur ) ) ;
return memo ;
} , [ ] ) ;
} ;
LinkedList . prototype . reduce = function ( callback , memo ) {
var cur , next = this . iterator ( ) ;
while ( ( cur = next ( ) ) ) {
memo = callback ( memo , cur ) ;
}
return memo ;
} ;
return LinkedList ;
} ( ) ) ;
exports . default = LinkedList ;
/***/ } ) ,
/* 45 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var container _1 = _ _webpack _require _ _ ( 17 ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var OBSERVER _CONFIG = {
attributes : true ,
characterData : true ,
characterDataOldValue : true ,
childList : true ,
subtree : true ,
} ;
var MAX _OPTIMIZE _ITERATIONS = 100 ;
var ScrollBlot = /** @class */ ( function ( _super ) {
_ _extends ( ScrollBlot , _super ) ;
function ScrollBlot ( node ) {
var _this = _super . call ( this , node ) || this ;
_this . scroll = _this ;
_this . observer = new MutationObserver ( function ( mutations ) {
_this . update ( mutations ) ;
} ) ;
_this . observer . observe ( _this . domNode , OBSERVER _CONFIG ) ;
_this . attach ( ) ;
return _this ;
}
ScrollBlot . prototype . detach = function ( ) {
_super . prototype . detach . call ( this ) ;
this . observer . disconnect ( ) ;
} ;
ScrollBlot . prototype . deleteAt = function ( index , length ) {
this . update ( ) ;
if ( index === 0 && length === this . length ( ) ) {
this . children . forEach ( function ( child ) {
child . remove ( ) ;
} ) ;
}
else {
_super . prototype . deleteAt . call ( this , index , length ) ;
}
} ;
ScrollBlot . prototype . formatAt = function ( index , length , name , value ) {
this . update ( ) ;
_super . prototype . formatAt . call ( this , index , length , name , value ) ;
} ;
ScrollBlot . prototype . insertAt = function ( index , value , def ) {
this . update ( ) ;
_super . prototype . insertAt . call ( this , index , value , def ) ;
} ;
ScrollBlot . prototype . optimize = function ( mutations , context ) {
var _this = this ;
if ( mutations === void 0 ) { mutations = [ ] ; }
if ( context === void 0 ) { context = { } ; }
_super . prototype . optimize . call ( this , context ) ;
// We must modify mutations directly, cannot make copy and then modify
var records = [ ] . slice . call ( this . observer . takeRecords ( ) ) ;
// Array.push currently seems to be implemented by a non-tail recursive function
// so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());
while ( records . length > 0 )
mutations . push ( records . pop ( ) ) ;
// TODO use WeakMap
var mark = function ( blot , markParent ) {
if ( markParent === void 0 ) { markParent = true ; }
if ( blot == null || blot === _this )
return ;
if ( blot . domNode . parentNode == null )
return ;
// @ts-ignore
if ( blot . domNode [ Registry . DATA _KEY ] . mutations == null ) {
// @ts-ignore
blot . domNode [ Registry . DATA _KEY ] . mutations = [ ] ;
}
if ( markParent )
mark ( blot . parent ) ;
} ;
var optimize = function ( blot ) {
// Post-order traversal
if (
// @ts-ignore
blot . domNode [ Registry . DATA _KEY ] == null ||
// @ts-ignore
blot . domNode [ Registry . DATA _KEY ] . mutations == null ) {
return ;
}
if ( blot instanceof container _1 . default ) {
blot . children . forEach ( optimize ) ;
}
blot . optimize ( context ) ;
} ;
var remaining = mutations ;
for ( var i = 0 ; remaining . length > 0 ; i += 1 ) {
if ( i >= MAX _OPTIMIZE _ITERATIONS ) {
throw new Error ( '[Parchment] Maximum optimize iterations reached' ) ;
}
remaining . forEach ( function ( mutation ) {
var blot = Registry . find ( mutation . target , true ) ;
if ( blot == null )
return ;
if ( blot . domNode === mutation . target ) {
if ( mutation . type === 'childList' ) {
mark ( Registry . find ( mutation . previousSibling , false ) ) ;
[ ] . forEach . call ( mutation . addedNodes , function ( node ) {
var child = Registry . find ( node , false ) ;
mark ( child , false ) ;
if ( child instanceof container _1 . default ) {
child . children . forEach ( function ( grandChild ) {
mark ( grandChild , false ) ;
} ) ;
}
} ) ;
}
else if ( mutation . type === 'attributes' ) {
mark ( blot . prev ) ;
}
}
mark ( blot ) ;
} ) ;
this . children . forEach ( optimize ) ;
remaining = [ ] . slice . call ( this . observer . takeRecords ( ) ) ;
records = remaining . slice ( ) ;
while ( records . length > 0 )
mutations . push ( records . pop ( ) ) ;
}
} ;
ScrollBlot . prototype . update = function ( mutations , context ) {
var _this = this ;
if ( context === void 0 ) { context = { } ; }
mutations = mutations || this . observer . takeRecords ( ) ;
// TODO use WeakMap
mutations
. map ( function ( mutation ) {
var blot = Registry . find ( mutation . target , true ) ;
if ( blot == null )
return null ;
// @ts-ignore
if ( blot . domNode [ Registry . DATA _KEY ] . mutations == null ) {
// @ts-ignore
blot . domNode [ Registry . DATA _KEY ] . mutations = [ mutation ] ;
return blot ;
}
else {
// @ts-ignore
blot . domNode [ Registry . DATA _KEY ] . mutations . push ( mutation ) ;
return null ;
}
} )
. forEach ( function ( blot ) {
if ( blot == null ||
blot === _this ||
//@ts-ignore
blot . domNode [ Registry . DATA _KEY ] == null )
return ;
// @ts-ignore
blot . update ( blot . domNode [ Registry . DATA _KEY ] . mutations || [ ] , context ) ;
} ) ;
// @ts-ignore
if ( this . domNode [ Registry . DATA _KEY ] . mutations != null ) {
// @ts-ignore
_super . prototype . update . call ( this , this . domNode [ Registry . DATA _KEY ] . mutations , context ) ;
}
this . optimize ( mutations , context ) ;
} ;
ScrollBlot . blotName = 'scroll' ;
ScrollBlot . defaultChild = 'block' ;
ScrollBlot . scope = Registry . Scope . BLOCK _BLOT ;
ScrollBlot . tagName = 'DIV' ;
return ScrollBlot ;
} ( container _1 . default ) ) ;
exports . default = ScrollBlot ;
/***/ } ) ,
/* 46 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var format _1 = _ _webpack _require _ _ ( 18 ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
// Shallow object comparison
function isEqual ( obj1 , obj2 ) {
if ( Object . keys ( obj1 ) . length !== Object . keys ( obj2 ) . length )
return false ;
// @ts-ignore
for ( var prop in obj1 ) {
// @ts-ignore
if ( obj1 [ prop ] !== obj2 [ prop ] )
return false ;
}
return true ;
}
var InlineBlot = /** @class */ ( function ( _super ) {
_ _extends ( InlineBlot , _super ) ;
function InlineBlot ( ) {
return _super !== null && _super . apply ( this , arguments ) || this ;
}
InlineBlot . formats = function ( domNode ) {
if ( domNode . tagName === InlineBlot . tagName )
return undefined ;
return _super . formats . call ( this , domNode ) ;
} ;
InlineBlot . prototype . format = function ( name , value ) {
var _this = this ;
if ( name === this . statics . blotName && ! value ) {
this . children . forEach ( function ( child ) {
if ( ! ( child instanceof format _1 . default ) ) {
child = child . wrap ( InlineBlot . blotName , true ) ;
}
_this . attributes . copy ( child ) ;
} ) ;
this . unwrap ( ) ;
}
else {
_super . prototype . format . call ( this , name , value ) ;
}
} ;
InlineBlot . prototype . formatAt = function ( index , length , name , value ) {
if ( this . formats ( ) [ name ] != null || Registry . query ( name , Registry . Scope . ATTRIBUTE ) ) {
var blot = this . isolate ( index , length ) ;
blot . format ( name , value ) ;
}
else {
_super . prototype . formatAt . call ( this , index , length , name , value ) ;
}
} ;
InlineBlot . prototype . optimize = function ( context ) {
_super . prototype . optimize . call ( this , context ) ;
var formats = this . formats ( ) ;
if ( Object . keys ( formats ) . length === 0 ) {
return this . unwrap ( ) ; // unformatted span
}
var next = this . next ;
if ( next instanceof InlineBlot && next . prev === this && isEqual ( formats , next . formats ( ) ) ) {
next . moveChildren ( this ) ;
next . remove ( ) ;
}
} ;
InlineBlot . blotName = 'inline' ;
InlineBlot . scope = Registry . Scope . INLINE _BLOT ;
InlineBlot . tagName = 'SPAN' ;
return InlineBlot ;
} ( format _1 . default ) ) ;
exports . default = InlineBlot ;
/***/ } ) ,
/* 47 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var format _1 = _ _webpack _require _ _ ( 18 ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var BlockBlot = /** @class */ ( function ( _super ) {
_ _extends ( BlockBlot , _super ) ;
function BlockBlot ( ) {
return _super !== null && _super . apply ( this , arguments ) || this ;
}
BlockBlot . formats = function ( domNode ) {
var tagName = Registry . query ( BlockBlot . blotName ) . tagName ;
if ( domNode . tagName === tagName )
return undefined ;
return _super . formats . call ( this , domNode ) ;
} ;
BlockBlot . prototype . format = function ( name , value ) {
if ( Registry . query ( name , Registry . Scope . BLOCK ) == null ) {
return ;
}
else if ( name === this . statics . blotName && ! value ) {
this . replaceWith ( BlockBlot . blotName ) ;
}
else {
_super . prototype . format . call ( this , name , value ) ;
}
} ;
BlockBlot . prototype . formatAt = function ( index , length , name , value ) {
if ( Registry . query ( name , Registry . Scope . BLOCK ) != null ) {
this . format ( name , value ) ;
}
else {
_super . prototype . formatAt . call ( this , index , length , name , value ) ;
}
} ;
BlockBlot . prototype . insertAt = function ( index , value , def ) {
if ( def == null || Registry . query ( value , Registry . Scope . INLINE ) != null ) {
// Insert text or inline
_super . prototype . insertAt . call ( this , index , value , def ) ;
}
else {
var after = this . split ( index ) ;
var blot = Registry . create ( value , def ) ;
after . parent . insertBefore ( blot , after ) ;
}
} ;
BlockBlot . prototype . update = function ( mutations , context ) {
if ( navigator . userAgent . match ( /Trident/ ) ) {
this . build ( ) ;
}
else {
_super . prototype . update . call ( this , mutations , context ) ;
}
} ;
BlockBlot . blotName = 'block' ;
BlockBlot . scope = Registry . Scope . BLOCK _BLOT ;
BlockBlot . tagName = 'P' ;
return BlockBlot ;
} ( format _1 . default ) ) ;
exports . default = BlockBlot ;
/***/ } ) ,
/* 48 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var leaf _1 = _ _webpack _require _ _ ( 19 ) ;
var EmbedBlot = /** @class */ ( function ( _super ) {
_ _extends ( EmbedBlot , _super ) ;
function EmbedBlot ( ) {
return _super !== null && _super . apply ( this , arguments ) || this ;
}
EmbedBlot . formats = function ( domNode ) {
return undefined ;
} ;
EmbedBlot . prototype . format = function ( name , value ) {
// super.formatAt wraps, which is what we want in general,
// but this allows subclasses to overwrite for formats
// that just apply to particular embeds
_super . prototype . formatAt . call ( this , 0 , this . length ( ) , name , value ) ;
} ;
EmbedBlot . prototype . formatAt = function ( index , length , name , value ) {
if ( index === 0 && length === this . length ( ) ) {
this . format ( name , value ) ;
}
else {
_super . prototype . formatAt . call ( this , index , length , name , value ) ;
}
} ;
EmbedBlot . prototype . formats = function ( ) {
return this . statics . formats ( this . domNode ) ;
} ;
return EmbedBlot ;
} ( leaf _1 . default ) ) ;
exports . default = EmbedBlot ;
/***/ } ) ,
/* 49 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _ _extends = ( this && this . _ _extends ) || ( function ( ) {
var extendStatics = Object . setPrototypeOf ||
( { _ _proto _ _ : [ ] } instanceof Array && function ( d , b ) { d . _ _proto _ _ = b ; } ) ||
function ( d , b ) { for ( var p in b ) if ( b . hasOwnProperty ( p ) ) d [ p ] = b [ p ] ; } ;
return function ( d , b ) {
extendStatics ( d , b ) ;
function _ _ ( ) { this . constructor = d ; }
d . prototype = b === null ? Object . create ( b ) : ( _ _ . prototype = b . prototype , new _ _ ( ) ) ;
} ;
} ) ( ) ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
var leaf _1 = _ _webpack _require _ _ ( 19 ) ;
var Registry = _ _webpack _require _ _ ( 1 ) ;
var TextBlot = /** @class */ ( function ( _super ) {
_ _extends ( TextBlot , _super ) ;
function TextBlot ( node ) {
var _this = _super . call ( this , node ) || this ;
_this . text = _this . statics . value ( _this . domNode ) ;
return _this ;
}
TextBlot . create = function ( value ) {
return document . createTextNode ( value ) ;
} ;
TextBlot . value = function ( domNode ) {
var text = domNode . data ;
// @ts-ignore
if ( text [ 'normalize' ] )
text = text [ 'normalize' ] ( ) ;
return text ;
} ;
TextBlot . prototype . deleteAt = function ( index , length ) {
this . domNode . data = this . text = this . text . slice ( 0 , index ) + this . text . slice ( index + length ) ;
} ;
TextBlot . prototype . index = function ( node , offset ) {
if ( this . domNode === node ) {
return offset ;
}
return - 1 ;
} ;
TextBlot . prototype . insertAt = function ( index , value , def ) {
if ( def == null ) {
this . text = this . text . slice ( 0 , index ) + value + this . text . slice ( index ) ;
this . domNode . data = this . text ;
}
else {
_super . prototype . insertAt . call ( this , index , value , def ) ;
}
} ;
TextBlot . prototype . length = function ( ) {
return this . text . length ;
} ;
TextBlot . prototype . optimize = function ( context ) {
_super . prototype . optimize . call ( this , context ) ;
this . text = this . statics . value ( this . domNode ) ;
if ( this . text . length === 0 ) {
this . remove ( ) ;
}
else if ( this . next instanceof TextBlot && this . next . prev === this ) {
this . insertAt ( this . length ( ) , this . next . value ( ) ) ;
this . next . remove ( ) ;
}
} ;
TextBlot . prototype . position = function ( index , inclusive ) {
if ( inclusive === void 0 ) { inclusive = false ; }
return [ this . domNode , index ] ;
} ;
TextBlot . prototype . split = function ( index , force ) {
if ( force === void 0 ) { force = false ; }
if ( ! force ) {
if ( index === 0 )
return this ;
if ( index === this . length ( ) )
return this . next ;
}
var after = Registry . create ( this . domNode . splitText ( index ) ) ;
this . parent . insertBefore ( after , this . next ) ;
this . text = this . statics . value ( this . domNode ) ;
return after ;
} ;
TextBlot . prototype . update = function ( mutations , context ) {
var _this = this ;
if ( mutations . some ( function ( mutation ) {
return mutation . type === 'characterData' && mutation . target === _this . domNode ;
} ) ) {
this . text = this . statics . value ( this . domNode ) ;
}
} ;
TextBlot . prototype . value = function ( ) {
return this . text ;
} ;
TextBlot . blotName = 'text' ;
TextBlot . scope = Registry . Scope . INLINE _BLOT ;
return TextBlot ;
} ( leaf _1 . default ) ) ;
exports . default = TextBlot ;
/***/ } ) ,
/* 50 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var elem = document . createElement ( 'div' ) ;
elem . classList . toggle ( 'test-class' , false ) ;
if ( elem . classList . contains ( 'test-class' ) ) {
var _toggle = DOMTokenList . prototype . toggle ;
DOMTokenList . prototype . toggle = function ( token , force ) {
if ( arguments . length > 1 && ! this . contains ( token ) === ! force ) {
return force ;
} else {
return _toggle . call ( this , token ) ;
}
} ;
}
if ( ! String . prototype . startsWith ) {
String . prototype . startsWith = function ( searchString , position ) {
position = position || 0 ;
return this . substr ( position , searchString . length ) === searchString ;
} ;
}
if ( ! String . prototype . endsWith ) {
String . prototype . endsWith = function ( searchString , position ) {
var subjectString = this . toString ( ) ;
if ( typeof position !== 'number' || ! isFinite ( position ) || Math . floor ( position ) !== position || position > subjectString . length ) {
position = subjectString . length ;
}
position -= searchString . length ;
var lastIndex = subjectString . indexOf ( searchString , position ) ;
return lastIndex !== - 1 && lastIndex === position ;
} ;
}
if ( ! Array . prototype . find ) {
Object . defineProperty ( Array . prototype , "find" , {
value : function value ( predicate ) {
if ( this === null ) {
throw new TypeError ( 'Array.prototype.find called on null or undefined' ) ;
}
if ( typeof predicate !== 'function' ) {
throw new TypeError ( 'predicate must be a function' ) ;
}
var list = Object ( this ) ;
var length = list . length >>> 0 ;
var thisArg = arguments [ 1 ] ;
var value ;
for ( var i = 0 ; i < length ; i ++ ) {
value = list [ i ] ;
if ( predicate . call ( thisArg , value , i , list ) ) {
return value ;
}
}
return undefined ;
}
} ) ;
}
document . addEventListener ( "DOMContentLoaded" , function ( ) {
// Disable resizing in Firefox
document . execCommand ( "enableObjectResizing" , false , false ) ;
// Disable automatic linkifying in IE11
document . execCommand ( "autoUrlDetect" , false , false ) ;
} ) ;
/***/ } ) ,
/* 51 */
/***/ ( function ( module , exports ) {
/ * *
* This library modifies the diff - patch - match library by Neil Fraser
* by removing the patch and match functionality and certain advanced
* options in the diff function . The original license is as follows :
*
* ===
*
* Diff Match and Patch
*
* Copyright 2006 Google Inc .
* http : //code.google.com/p/google-diff-match-patch/
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* /
/ * *
* The data structure representing a diff is an array of tuples :
* [ [ DIFF _DELETE , 'Hello' ] , [ DIFF _INSERT , 'Goodbye' ] , [ DIFF _EQUAL , ' world.' ] ]
* which means : delete 'Hello' , add 'Goodbye' and keep ' world.'
* /
var DIFF _DELETE = - 1 ;
var DIFF _INSERT = 1 ;
var DIFF _EQUAL = 0 ;
/ * *
* Find the differences between two texts . Simplifies the problem by stripping
* any common prefix or suffix off the texts before diffing .
* @ param { string } text1 Old string to be diffed .
* @ param { string } text2 New string to be diffed .
* @ param { Int } cursor _pos Expected edit position in text1 ( optional )
* @ return { Array } Array of diff tuples .
* /
function diff _main ( text1 , text2 , cursor _pos ) {
// Check for equality (speedup).
if ( text1 == text2 ) {
if ( text1 ) {
return [ [ DIFF _EQUAL , text1 ] ] ;
}
return [ ] ;
}
// Check cursor_pos within bounds
if ( cursor _pos < 0 || text1 . length < cursor _pos ) {
cursor _pos = null ;
}
// Trim off common prefix (speedup).
var commonlength = diff _commonPrefix ( text1 , text2 ) ;
var commonprefix = text1 . substring ( 0 , commonlength ) ;
text1 = text1 . substring ( commonlength ) ;
text2 = text2 . substring ( commonlength ) ;
// Trim off common suffix (speedup).
commonlength = diff _commonSuffix ( text1 , text2 ) ;
var commonsuffix = text1 . substring ( text1 . length - commonlength ) ;
text1 = text1 . substring ( 0 , text1 . length - commonlength ) ;
text2 = text2 . substring ( 0 , text2 . length - commonlength ) ;
// Compute the diff on the middle block.
var diffs = diff _compute _ ( text1 , text2 ) ;
// Restore the prefix and suffix.
if ( commonprefix ) {
diffs . unshift ( [ DIFF _EQUAL , commonprefix ] ) ;
}
if ( commonsuffix ) {
diffs . push ( [ DIFF _EQUAL , commonsuffix ] ) ;
}
diff _cleanupMerge ( diffs ) ;
if ( cursor _pos != null ) {
diffs = fix _cursor ( diffs , cursor _pos ) ;
}
diffs = fix _emoji ( diffs ) ;
return diffs ;
} ;
/ * *
* Find the differences between two texts . Assumes that the texts do not
* have any common prefix or suffix .
* @ param { string } text1 Old string to be diffed .
* @ param { string } text2 New string to be diffed .
* @ return { Array } Array of diff tuples .
* /
function diff _compute _ ( text1 , text2 ) {
var diffs ;
if ( ! text1 ) {
// Just add some text (speedup).
return [ [ DIFF _INSERT , text2 ] ] ;
}
if ( ! text2 ) {
// Just delete some text (speedup).
return [ [ DIFF _DELETE , text1 ] ] ;
}
var longtext = text1 . length > text2 . length ? text1 : text2 ;
var shorttext = text1 . length > text2 . length ? text2 : text1 ;
var i = longtext . indexOf ( shorttext ) ;
if ( i != - 1 ) {
// Shorter text is inside the longer text (speedup).
diffs = [ [ DIFF _INSERT , longtext . substring ( 0 , i ) ] ,
[ DIFF _EQUAL , shorttext ] ,
[ DIFF _INSERT , longtext . substring ( i + shorttext . length ) ] ] ;
// Swap insertions for deletions if diff is reversed.
if ( text1 . length > text2 . length ) {
diffs [ 0 ] [ 0 ] = diffs [ 2 ] [ 0 ] = DIFF _DELETE ;
}
return diffs ;
}
if ( shorttext . length == 1 ) {
// Single character string.
// After the previous speedup, the character can't be an equality.
return [ [ DIFF _DELETE , text1 ] , [ DIFF _INSERT , text2 ] ] ;
}
// Check to see if the problem can be split in two.
var hm = diff _halfMatch _ ( text1 , text2 ) ;
if ( hm ) {
// A half-match was found, sort out the return data.
var text1 _a = hm [ 0 ] ;
var text1 _b = hm [ 1 ] ;
var text2 _a = hm [ 2 ] ;
var text2 _b = hm [ 3 ] ;
var mid _common = hm [ 4 ] ;
// Send both pairs off for separate processing.
var diffs _a = diff _main ( text1 _a , text2 _a ) ;
var diffs _b = diff _main ( text1 _b , text2 _b ) ;
// Merge the results.
return diffs _a . concat ( [ [ DIFF _EQUAL , mid _common ] ] , diffs _b ) ;
}
return diff _bisect _ ( text1 , text2 ) ;
} ;
/ * *
* Find the 'middle snake' of a diff , split the problem in two
* and return the recursively constructed diff .
* See Myers 1986 paper : An O ( ND ) Difference Algorithm and Its Variations .
* @ param { string } text1 Old string to be diffed .
* @ param { string } text2 New string to be diffed .
* @ return { Array } Array of diff tuples .
* @ private
* /
function diff _bisect _ ( text1 , text2 ) {
// Cache the text lengths to prevent multiple calls.
var text1 _length = text1 . length ;
var text2 _length = text2 . length ;
var max _d = Math . ceil ( ( text1 _length + text2 _length ) / 2 ) ;
var v _offset = max _d ;
var v _length = 2 * max _d ;
var v1 = new Array ( v _length ) ;
var v2 = new Array ( v _length ) ;
// Setting all elements to -1 is faster in Chrome & Firefox than mixing
// integers and undefined.
for ( var x = 0 ; x < v _length ; x ++ ) {
v1 [ x ] = - 1 ;
v2 [ x ] = - 1 ;
}
v1 [ v _offset + 1 ] = 0 ;
v2 [ v _offset + 1 ] = 0 ;
var delta = text1 _length - text2 _length ;
// If the total number of characters is odd, then the front path will collide
// with the reverse path.
var front = ( delta % 2 != 0 ) ;
// Offsets for start and end of k loop.
// Prevents mapping of space beyond the grid.
var k1start = 0 ;
var k1end = 0 ;
var k2start = 0 ;
var k2end = 0 ;
for ( var d = 0 ; d < max _d ; d ++ ) {
// Walk the front path one step.
for ( var k1 = - d + k1start ; k1 <= d - k1end ; k1 += 2 ) {
var k1 _offset = v _offset + k1 ;
var x1 ;
if ( k1 == - d || ( k1 != d && v1 [ k1 _offset - 1 ] < v1 [ k1 _offset + 1 ] ) ) {
x1 = v1 [ k1 _offset + 1 ] ;
} else {
x1 = v1 [ k1 _offset - 1 ] + 1 ;
}
var y1 = x1 - k1 ;
while ( x1 < text1 _length && y1 < text2 _length &&
text1 . charAt ( x1 ) == text2 . charAt ( y1 ) ) {
x1 ++ ;
y1 ++ ;
}
v1 [ k1 _offset ] = x1 ;
if ( x1 > text1 _length ) {
// Ran off the right of the graph.
k1end += 2 ;
} else if ( y1 > text2 _length ) {
// Ran off the bottom of the graph.
k1start += 2 ;
} else if ( front ) {
var k2 _offset = v _offset + delta - k1 ;
if ( k2 _offset >= 0 && k2 _offset < v _length && v2 [ k2 _offset ] != - 1 ) {
// Mirror x2 onto top-left coordinate system.
var x2 = text1 _length - v2 [ k2 _offset ] ;
if ( x1 >= x2 ) {
// Overlap detected.
return diff _bisectSplit _ ( text1 , text2 , x1 , y1 ) ;
}
}
}
}
// Walk the reverse path one step.
for ( var k2 = - d + k2start ; k2 <= d - k2end ; k2 += 2 ) {
var k2 _offset = v _offset + k2 ;
var x2 ;
if ( k2 == - d || ( k2 != d && v2 [ k2 _offset - 1 ] < v2 [ k2 _offset + 1 ] ) ) {
x2 = v2 [ k2 _offset + 1 ] ;
} else {
x2 = v2 [ k2 _offset - 1 ] + 1 ;
}
var y2 = x2 - k2 ;
while ( x2 < text1 _length && y2 < text2 _length &&
text1 . charAt ( text1 _length - x2 - 1 ) ==
text2 . charAt ( text2 _length - y2 - 1 ) ) {
x2 ++ ;
y2 ++ ;
}
v2 [ k2 _offset ] = x2 ;
if ( x2 > text1 _length ) {
// Ran off the left of the graph.
k2end += 2 ;
} else if ( y2 > text2 _length ) {
// Ran off the top of the graph.
k2start += 2 ;
} else if ( ! front ) {
var k1 _offset = v _offset + delta - k2 ;
if ( k1 _offset >= 0 && k1 _offset < v _length && v1 [ k1 _offset ] != - 1 ) {
var x1 = v1 [ k1 _offset ] ;
var y1 = v _offset + x1 - k1 _offset ;
// Mirror x2 onto top-left coordinate system.
x2 = text1 _length - x2 ;
if ( x1 >= x2 ) {
// Overlap detected.
return diff _bisectSplit _ ( text1 , text2 , x1 , y1 ) ;
}
}
}
}
}
// Diff took too long and hit the deadline or
// number of diffs equals number of characters, no commonality at all.
return [ [ DIFF _DELETE , text1 ] , [ DIFF _INSERT , text2 ] ] ;
} ;
/ * *
* Given the location of the 'middle snake' , split the diff in two parts
* and recurse .
* @ param { string } text1 Old string to be diffed .
* @ param { string } text2 New string to be diffed .
* @ param { number } x Index of split point in text1 .
* @ param { number } y Index of split point in text2 .
* @ return { Array } Array of diff tuples .
* /
function diff _bisectSplit _ ( text1 , text2 , x , y ) {
var text1a = text1 . substring ( 0 , x ) ;
var text2a = text2 . substring ( 0 , y ) ;
var text1b = text1 . substring ( x ) ;
var text2b = text2 . substring ( y ) ;
// Compute both diffs serially.
var diffs = diff _main ( text1a , text2a ) ;
var diffsb = diff _main ( text1b , text2b ) ;
return diffs . concat ( diffsb ) ;
} ;
/ * *
* Determine the common prefix of two strings .
* @ param { string } text1 First string .
* @ param { string } text2 Second string .
* @ return { number } The number of characters common to the start of each
* string .
* /
function diff _commonPrefix ( text1 , text2 ) {
// Quick check for common null cases.
if ( ! text1 || ! text2 || text1 . charAt ( 0 ) != text2 . charAt ( 0 ) ) {
return 0 ;
}
// Binary search.
// Performance analysis: http://neil.fraser.name/news/2007/10/09/
var pointermin = 0 ;
var pointermax = Math . min ( text1 . length , text2 . length ) ;
var pointermid = pointermax ;
var pointerstart = 0 ;
while ( pointermin < pointermid ) {
if ( text1 . substring ( pointerstart , pointermid ) ==
text2 . substring ( pointerstart , pointermid ) ) {
pointermin = pointermid ;
pointerstart = pointermin ;
} else {
pointermax = pointermid ;
}
pointermid = Math . floor ( ( pointermax - pointermin ) / 2 + pointermin ) ;
}
return pointermid ;
} ;
/ * *
* Determine the common suffix of two strings .
* @ param { string } text1 First string .
* @ param { string } text2 Second string .
* @ return { number } The number of characters common to the end of each string .
* /
function diff _commonSuffix ( text1 , text2 ) {
// Quick check for common null cases.
if ( ! text1 || ! text2 ||
text1 . charAt ( text1 . length - 1 ) != text2 . charAt ( text2 . length - 1 ) ) {
return 0 ;
}
// Binary search.
// Performance analysis: http://neil.fraser.name/news/2007/10/09/
var pointermin = 0 ;
var pointermax = Math . min ( text1 . length , text2 . length ) ;
var pointermid = pointermax ;
var pointerend = 0 ;
while ( pointermin < pointermid ) {
if ( text1 . substring ( text1 . length - pointermid , text1 . length - pointerend ) ==
text2 . substring ( text2 . length - pointermid , text2 . length - pointerend ) ) {
pointermin = pointermid ;
pointerend = pointermin ;
} else {
pointermax = pointermid ;
}
pointermid = Math . floor ( ( pointermax - pointermin ) / 2 + pointermin ) ;
}
return pointermid ;
} ;
/ * *
* Do the two texts share a substring which is at least half the length of the
* longer text ?
* This speedup can produce non - minimal diffs .
* @ param { string } text1 First string .
* @ param { string } text2 Second string .
* @ return { Array . < string > } Five element Array , containing the prefix of
* text1 , the suffix of text1 , the prefix of text2 , the suffix of
* text2 and the common middle . Or null if there was no match .
* /
function diff _halfMatch _ ( text1 , text2 ) {
var longtext = text1 . length > text2 . length ? text1 : text2 ;
var shorttext = text1 . length > text2 . length ? text2 : text1 ;
if ( longtext . length < 4 || shorttext . length * 2 < longtext . length ) {
return null ; // Pointless.
}
/ * *
* Does a substring of shorttext exist within longtext such that the substring
* is at least half the length of longtext ?
* Closure , but does not reference any external variables .
* @ param { string } longtext Longer string .
* @ param { string } shorttext Shorter string .
* @ param { number } i Start index of quarter length substring within longtext .
* @ return { Array . < string > } Five element Array , containing the prefix of
* longtext , the suffix of longtext , the prefix of shorttext , the suffix
* of shorttext and the common middle . Or null if there was no match .
* @ private
* /
function diff _halfMatchI _ ( longtext , shorttext , i ) {
// Start with a 1/4 length substring at position i as a seed.
var seed = longtext . substring ( i , i + Math . floor ( longtext . length / 4 ) ) ;
var j = - 1 ;
var best _common = '' ;
var best _longtext _a , best _longtext _b , best _shorttext _a , best _shorttext _b ;
while ( ( j = shorttext . indexOf ( seed , j + 1 ) ) != - 1 ) {
var prefixLength = diff _commonPrefix ( longtext . substring ( i ) ,
shorttext . substring ( j ) ) ;
var suffixLength = diff _commonSuffix ( longtext . substring ( 0 , i ) ,
shorttext . substring ( 0 , j ) ) ;
if ( best _common . length < suffixLength + prefixLength ) {
best _common = shorttext . substring ( j - suffixLength , j ) +
shorttext . substring ( j , j + prefixLength ) ;
best _longtext _a = longtext . substring ( 0 , i - suffixLength ) ;
best _longtext _b = longtext . substring ( i + prefixLength ) ;
best _shorttext _a = shorttext . substring ( 0 , j - suffixLength ) ;
best _shorttext _b = shorttext . substring ( j + prefixLength ) ;
}
}
if ( best _common . length * 2 >= longtext . length ) {
return [ best _longtext _a , best _longtext _b ,
best _shorttext _a , best _shorttext _b , best _common ] ;
} else {
return null ;
}
}
// First check if the second quarter is the seed for a half-match.
var hm1 = diff _halfMatchI _ ( longtext , shorttext ,
Math . ceil ( longtext . length / 4 ) ) ;
// Check again based on the third quarter.
var hm2 = diff _halfMatchI _ ( longtext , shorttext ,
Math . ceil ( longtext . length / 2 ) ) ;
var hm ;
if ( ! hm1 && ! hm2 ) {
return null ;
} else if ( ! hm2 ) {
hm = hm1 ;
} else if ( ! hm1 ) {
hm = hm2 ;
} else {
// Both matched. Select the longest.
hm = hm1 [ 4 ] . length > hm2 [ 4 ] . length ? hm1 : hm2 ;
}
// A half-match was found, sort out the return data.
var text1 _a , text1 _b , text2 _a , text2 _b ;
if ( text1 . length > text2 . length ) {
text1 _a = hm [ 0 ] ;
text1 _b = hm [ 1 ] ;
text2 _a = hm [ 2 ] ;
text2 _b = hm [ 3 ] ;
} else {
text2 _a = hm [ 0 ] ;
text2 _b = hm [ 1 ] ;
text1 _a = hm [ 2 ] ;
text1 _b = hm [ 3 ] ;
}
var mid _common = hm [ 4 ] ;
return [ text1 _a , text1 _b , text2 _a , text2 _b , mid _common ] ;
} ;
/ * *
* Reorder and merge like edit sections . Merge equalities .
* Any edit section can move as long as it doesn ' t cross an equality .
* @ param { Array } diffs Array of diff tuples .
* /
function diff _cleanupMerge ( diffs ) {
diffs . push ( [ DIFF _EQUAL , '' ] ) ; // Add a dummy entry at the end.
var pointer = 0 ;
var count _delete = 0 ;
var count _insert = 0 ;
var text _delete = '' ;
var text _insert = '' ;
var commonlength ;
while ( pointer < diffs . length ) {
switch ( diffs [ pointer ] [ 0 ] ) {
case DIFF _INSERT :
count _insert ++ ;
text _insert += diffs [ pointer ] [ 1 ] ;
pointer ++ ;
break ;
case DIFF _DELETE :
count _delete ++ ;
text _delete += diffs [ pointer ] [ 1 ] ;
pointer ++ ;
break ;
case DIFF _EQUAL :
// Upon reaching an equality, check for prior redundancies.
if ( count _delete + count _insert > 1 ) {
if ( count _delete !== 0 && count _insert !== 0 ) {
// Factor out any common prefixies.
commonlength = diff _commonPrefix ( text _insert , text _delete ) ;
if ( commonlength !== 0 ) {
if ( ( pointer - count _delete - count _insert ) > 0 &&
diffs [ pointer - count _delete - count _insert - 1 ] [ 0 ] ==
DIFF _EQUAL ) {
diffs [ pointer - count _delete - count _insert - 1 ] [ 1 ] +=
text _insert . substring ( 0 , commonlength ) ;
} else {
diffs . splice ( 0 , 0 , [ DIFF _EQUAL ,
text _insert . substring ( 0 , commonlength ) ] ) ;
pointer ++ ;
}
text _insert = text _insert . substring ( commonlength ) ;
text _delete = text _delete . substring ( commonlength ) ;
}
// Factor out any common suffixies.
commonlength = diff _commonSuffix ( text _insert , text _delete ) ;
if ( commonlength !== 0 ) {
diffs [ pointer ] [ 1 ] = text _insert . substring ( text _insert . length -
commonlength ) + diffs [ pointer ] [ 1 ] ;
text _insert = text _insert . substring ( 0 , text _insert . length -
commonlength ) ;
text _delete = text _delete . substring ( 0 , text _delete . length -
commonlength ) ;
}
}
// Delete the offending records and add the merged ones.
if ( count _delete === 0 ) {
diffs . splice ( pointer - count _insert ,
count _delete + count _insert , [ DIFF _INSERT , text _insert ] ) ;
} else if ( count _insert === 0 ) {
diffs . splice ( pointer - count _delete ,
count _delete + count _insert , [ DIFF _DELETE , text _delete ] ) ;
} else {
diffs . splice ( pointer - count _delete - count _insert ,
count _delete + count _insert , [ DIFF _DELETE , text _delete ] ,
[ DIFF _INSERT , text _insert ] ) ;
}
pointer = pointer - count _delete - count _insert +
( count _delete ? 1 : 0 ) + ( count _insert ? 1 : 0 ) + 1 ;
} else if ( pointer !== 0 && diffs [ pointer - 1 ] [ 0 ] == DIFF _EQUAL ) {
// Merge this equality with the previous one.
diffs [ pointer - 1 ] [ 1 ] += diffs [ pointer ] [ 1 ] ;
diffs . splice ( pointer , 1 ) ;
} else {
pointer ++ ;
}
count _insert = 0 ;
count _delete = 0 ;
text _delete = '' ;
text _insert = '' ;
break ;
}
}
if ( diffs [ diffs . length - 1 ] [ 1 ] === '' ) {
diffs . pop ( ) ; // Remove the dummy entry at the end.
}
// Second pass: look for single edits surrounded on both sides by equalities
// which can be shifted sideways to eliminate an equality.
// e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC
var changes = false ;
pointer = 1 ;
// Intentionally ignore the first and last element (don't need checking).
while ( pointer < diffs . length - 1 ) {
if ( diffs [ pointer - 1 ] [ 0 ] == DIFF _EQUAL &&
diffs [ pointer + 1 ] [ 0 ] == DIFF _EQUAL ) {
// This is a single edit surrounded by equalities.
if ( diffs [ pointer ] [ 1 ] . substring ( diffs [ pointer ] [ 1 ] . length -
diffs [ pointer - 1 ] [ 1 ] . length ) == diffs [ pointer - 1 ] [ 1 ] ) {
// Shift the edit over the previous equality.
diffs [ pointer ] [ 1 ] = diffs [ pointer - 1 ] [ 1 ] +
diffs [ pointer ] [ 1 ] . substring ( 0 , diffs [ pointer ] [ 1 ] . length -
diffs [ pointer - 1 ] [ 1 ] . length ) ;
diffs [ pointer + 1 ] [ 1 ] = diffs [ pointer - 1 ] [ 1 ] + diffs [ pointer + 1 ] [ 1 ] ;
diffs . splice ( pointer - 1 , 1 ) ;
changes = true ;
} else if ( diffs [ pointer ] [ 1 ] . substring ( 0 , diffs [ pointer + 1 ] [ 1 ] . length ) ==
diffs [ pointer + 1 ] [ 1 ] ) {
// Shift the edit over the next equality.
diffs [ pointer - 1 ] [ 1 ] += diffs [ pointer + 1 ] [ 1 ] ;
diffs [ pointer ] [ 1 ] =
diffs [ pointer ] [ 1 ] . substring ( diffs [ pointer + 1 ] [ 1 ] . length ) +
diffs [ pointer + 1 ] [ 1 ] ;
diffs . splice ( pointer + 1 , 1 ) ;
changes = true ;
}
}
pointer ++ ;
}
// If shifts were made, the diff needs reordering and another shift sweep.
if ( changes ) {
diff _cleanupMerge ( diffs ) ;
}
} ;
var diff = diff _main ;
diff . INSERT = DIFF _INSERT ;
diff . DELETE = DIFF _DELETE ;
diff . EQUAL = DIFF _EQUAL ;
module . exports = diff ;
/ *
* Modify a diff such that the cursor position points to the start of a change :
* E . g .
* cursor _normalize _diff ( [ [ DIFF _EQUAL , 'abc' ] ] , 1 )
* => [ 1 , [ [ DIFF _EQUAL , 'a' ] , [ DIFF _EQUAL , 'bc' ] ] ]
* cursor _normalize _diff ( [ [ DIFF _INSERT , 'new' ] , [ DIFF _DELETE , 'xyz' ] ] , 2 )
* => [ 2 , [ [ DIFF _INSERT , 'new' ] , [ DIFF _DELETE , 'xy' ] , [ DIFF _DELETE , 'z' ] ] ]
*
* @ param { Array } diffs Array of diff tuples
* @ param { Int } cursor _pos Suggested edit position . Must not be out of bounds !
* @ return { Array } A tuple [ cursor location in the modified diff , modified diff ]
* /
function cursor _normalize _diff ( diffs , cursor _pos ) {
if ( cursor _pos === 0 ) {
return [ DIFF _EQUAL , diffs ] ;
}
for ( var current _pos = 0 , i = 0 ; i < diffs . length ; i ++ ) {
var d = diffs [ i ] ;
if ( d [ 0 ] === DIFF _DELETE || d [ 0 ] === DIFF _EQUAL ) {
var next _pos = current _pos + d [ 1 ] . length ;
if ( cursor _pos === next _pos ) {
return [ i + 1 , diffs ] ;
} else if ( cursor _pos < next _pos ) {
// copy to prevent side effects
diffs = diffs . slice ( ) ;
// split d into two diff changes
var split _pos = cursor _pos - current _pos ;
var d _left = [ d [ 0 ] , d [ 1 ] . slice ( 0 , split _pos ) ] ;
var d _right = [ d [ 0 ] , d [ 1 ] . slice ( split _pos ) ] ;
diffs . splice ( i , 1 , d _left , d _right ) ;
return [ i + 1 , diffs ] ;
} else {
current _pos = next _pos ;
}
}
}
throw new Error ( 'cursor_pos is out of bounds!' )
}
/ *
* Modify a diff such that the edit position is "shifted" to the proposed edit location ( cursor _position ) .
*
* Case 1 )
* Check if a naive shift is possible :
* [ 0 , X ] , [ 1 , Y ] - > [ 1 , Y ] , [ 0 , X ] ( if X + Y === Y + X )
* [ 0 , X ] , [ - 1 , Y ] - > [ - 1 , Y ] , [ 0 , X ] ( if X + Y === Y + X ) - holds same result
* Case 2 )
* Check if the following shifts are possible :
* [ 0 , 'pre' ] , [ 1 , 'prefix' ] - > [ 1 , 'pre' ] , [ 0 , 'pre' ] , [ 1 , 'fix' ]
* [ 0 , 'pre' ] , [ - 1 , 'prefix' ] - > [ - 1 , 'pre' ] , [ 0 , 'pre' ] , [ - 1 , 'fix' ]
* ^ ^
* d d _next
*
* @ param { Array } diffs Array of diff tuples
* @ param { Int } cursor _pos Suggested edit position . Must not be out of bounds !
* @ return { Array } Array of diff tuples
* /
function fix _cursor ( diffs , cursor _pos ) {
var norm = cursor _normalize _diff ( diffs , cursor _pos ) ;
var ndiffs = norm [ 1 ] ;
var cursor _pointer = norm [ 0 ] ;
var d = ndiffs [ cursor _pointer ] ;
var d _next = ndiffs [ cursor _pointer + 1 ] ;
if ( d == null ) {
// Text was deleted from end of original string,
// cursor is now out of bounds in new string
return diffs ;
} else if ( d [ 0 ] !== DIFF _EQUAL ) {
// A modification happened at the cursor location.
// This is the expected outcome, so we can return the original diff.
return diffs ;
} else {
if ( d _next != null && d [ 1 ] + d _next [ 1 ] === d _next [ 1 ] + d [ 1 ] ) {
// Case 1)
// It is possible to perform a naive shift
ndiffs . splice ( cursor _pointer , 2 , d _next , d )
return merge _tuples ( ndiffs , cursor _pointer , 2 )
} else if ( d _next != null && d _next [ 1 ] . indexOf ( d [ 1 ] ) === 0 ) {
// Case 2)
// d[1] is a prefix of d_next[1]
// We can assume that d_next[0] !== 0, since d[0] === 0
// Shift edit locations..
ndiffs . splice ( cursor _pointer , 2 , [ d _next [ 0 ] , d [ 1 ] ] , [ 0 , d [ 1 ] ] ) ;
var suffix = d _next [ 1 ] . slice ( d [ 1 ] . length ) ;
if ( suffix . length > 0 ) {
ndiffs . splice ( cursor _pointer + 2 , 0 , [ d _next [ 0 ] , suffix ] ) ;
}
return merge _tuples ( ndiffs , cursor _pointer , 3 )
} else {
// Not possible to perform any modification
return diffs ;
}
}
}
/ *
* Check diff did not split surrogate pairs .
* Ex . [ 0 , '\uD83D' ] , [ - 1 , '\uDC36' ] , [ 1 , '\uDC2F' ] - > [ - 1 , '\uD83D\uDC36' ] , [ 1 , '\uD83D\uDC2F' ]
* '\uD83D\uDC36' === '🐶' , '\uD83D\uDC2F' === '🐯'
*
* @ param { Array } diffs Array of diff tuples
* @ return { Array } Array of diff tuples
* /
function fix _emoji ( diffs ) {
var compact = false ;
var starts _with _pair _end = function ( str ) {
return str . charCodeAt ( 0 ) >= 0xDC00 && str . charCodeAt ( 0 ) <= 0xDFFF ;
}
var ends _with _pair _start = function ( str ) {
return str . charCodeAt ( str . length - 1 ) >= 0xD800 && str . charCodeAt ( str . length - 1 ) <= 0xDBFF ;
}
for ( var i = 2 ; i < diffs . length ; i += 1 ) {
if ( diffs [ i - 2 ] [ 0 ] === DIFF _EQUAL && ends _with _pair _start ( diffs [ i - 2 ] [ 1 ] ) &&
diffs [ i - 1 ] [ 0 ] === DIFF _DELETE && starts _with _pair _end ( diffs [ i - 1 ] [ 1 ] ) &&
diffs [ i ] [ 0 ] === DIFF _INSERT && starts _with _pair _end ( diffs [ i ] [ 1 ] ) ) {
compact = true ;
diffs [ i - 1 ] [ 1 ] = diffs [ i - 2 ] [ 1 ] . slice ( - 1 ) + diffs [ i - 1 ] [ 1 ] ;
diffs [ i ] [ 1 ] = diffs [ i - 2 ] [ 1 ] . slice ( - 1 ) + diffs [ i ] [ 1 ] ;
diffs [ i - 2 ] [ 1 ] = diffs [ i - 2 ] [ 1 ] . slice ( 0 , - 1 ) ;
}
}
if ( ! compact ) {
return diffs ;
}
var fixed _diffs = [ ] ;
for ( var i = 0 ; i < diffs . length ; i += 1 ) {
if ( diffs [ i ] [ 1 ] . length > 0 ) {
fixed _diffs . push ( diffs [ i ] ) ;
}
}
return fixed _diffs ;
}
/ *
* Try to merge tuples with their neigbors in a given range .
* E . g . [ 0 , 'a' ] , [ 0 , 'b' ] - > [ 0 , 'ab' ]
*
* @ param { Array } diffs Array of diff tuples .
* @ param { Int } start Position of the first element to merge ( diffs [ start ] is also merged with diffs [ start - 1 ] ) .
* @ param { Int } length Number of consecutive elements to check .
* @ return { Array } Array of merged diff tuples .
* /
function merge _tuples ( diffs , start , length ) {
// Check from (start-1) to (start+length).
for ( var i = start + length - 1 ; i >= 0 && i >= start - 1 ; i -- ) {
if ( i + 1 < diffs . length ) {
var left _d = diffs [ i ] ;
var right _d = diffs [ i + 1 ] ;
if ( left _d [ 0 ] === right _d [ 1 ] ) {
diffs . splice ( i , 2 , [ left _d [ 0 ] , left _d [ 1 ] + right _d [ 1 ] ] ) ;
}
}
}
return diffs ;
}
/***/ } ) ,
/* 52 */
/***/ ( function ( module , exports ) {
exports = module . exports = typeof Object . keys === 'function'
? Object . keys : shim ;
exports . shim = shim ;
function shim ( obj ) {
var keys = [ ] ;
for ( var key in obj ) keys . push ( key ) ;
return keys ;
}
/***/ } ) ,
/* 53 */
/***/ ( function ( module , exports ) {
var supportsArgumentsClass = ( function ( ) {
return Object . prototype . toString . call ( arguments )
} ) ( ) == '[object Arguments]' ;
exports = module . exports = supportsArgumentsClass ? supported : unsupported ;
exports . supported = supported ;
function supported ( object ) {
return Object . prototype . toString . call ( object ) == '[object Arguments]' ;
} ;
exports . unsupported = unsupported ;
function unsupported ( object ) {
return object &&
typeof object == 'object' &&
typeof object . length == 'number' &&
Object . prototype . hasOwnProperty . call ( object , 'callee' ) &&
! Object . prototype . propertyIsEnumerable . call ( object , 'callee' ) ||
false ;
} ;
/***/ } ) ,
/* 54 */
/***/ ( function ( module , exports ) {
'use strict' ;
var has = Object . prototype . hasOwnProperty
, prefix = '~' ;
/ * *
* Constructor to create a storage for our ` EE ` objects .
* An ` Events ` instance is a plain object whose properties are event names .
*
* @ constructor
* @ api private
* /
function Events ( ) { }
//
// We try to not inherit from `Object.prototype`. In some engines creating an
// instance in this way is faster than calling `Object.create(null)` directly.
// If `Object.create(null)` is not supported we prefix the event names with a
// character to make sure that the built-in object properties are not
// overridden or used as an attack vector.
//
if ( Object . create ) {
Events . prototype = Object . create ( null ) ;
//
// This hack is needed because the `__proto__` property is still inherited in
// some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.
//
if ( ! new Events ( ) . _ _proto _ _ ) prefix = false ;
}
/ * *
* Representation of a single event listener .
*
* @ param { Function } fn The listener function .
* @ param { Mixed } context The context to invoke the listener with .
* @ param { Boolean } [ once = false ] Specify if the listener is a one - time listener .
* @ constructor
* @ api private
* /
function EE ( fn , context , once ) {
this . fn = fn ;
this . context = context ;
this . once = once || false ;
}
/ * *
* Minimal ` EventEmitter ` interface that is molded against the Node . js
* ` EventEmitter ` interface .
*
* @ constructor
* @ api public
* /
function EventEmitter ( ) {
this . _events = new Events ( ) ;
this . _eventsCount = 0 ;
}
/ * *
* Return an array listing the events for which the emitter has registered
* listeners .
*
* @ returns { Array }
* @ api public
* /
EventEmitter . prototype . eventNames = function eventNames ( ) {
var names = [ ]
, events
, name ;
if ( this . _eventsCount === 0 ) return names ;
for ( name in ( events = this . _events ) ) {
if ( has . call ( events , name ) ) names . push ( prefix ? name . slice ( 1 ) : name ) ;
}
if ( Object . getOwnPropertySymbols ) {
return names . concat ( Object . getOwnPropertySymbols ( events ) ) ;
}
return names ;
} ;
/ * *
* Return the listeners registered for a given event .
*
* @ param { String | Symbol } event The event name .
* @ param { Boolean } exists Only check if there are listeners .
* @ returns { Array | Boolean }
* @ api public
* /
EventEmitter . prototype . listeners = function listeners ( event , exists ) {
var evt = prefix ? prefix + event : event
, available = this . _events [ evt ] ;
if ( exists ) return ! ! available ;
if ( ! available ) return [ ] ;
if ( available . fn ) return [ available . fn ] ;
for ( var i = 0 , l = available . length , ee = new Array ( l ) ; i < l ; i ++ ) {
ee [ i ] = available [ i ] . fn ;
}
return ee ;
} ;
/ * *
* Calls each of the listeners registered for a given event .
*
* @ param { String | Symbol } event The event name .
* @ returns { Boolean } ` true ` if the event had listeners , else ` false ` .
* @ api public
* /
EventEmitter . prototype . emit = function emit ( event , a1 , a2 , a3 , a4 , a5 ) {
var evt = prefix ? prefix + event : event ;
if ( ! this . _events [ evt ] ) return false ;
var listeners = this . _events [ evt ]
, len = arguments . length
, args
, i ;
if ( listeners . fn ) {
if ( listeners . once ) this . removeListener ( event , listeners . fn , undefined , true ) ;
switch ( len ) {
case 1 : return listeners . fn . call ( listeners . context ) , true ;
case 2 : return listeners . fn . call ( listeners . context , a1 ) , true ;
case 3 : return listeners . fn . call ( listeners . context , a1 , a2 ) , true ;
case 4 : return listeners . fn . call ( listeners . context , a1 , a2 , a3 ) , true ;
case 5 : return listeners . fn . call ( listeners . context , a1 , a2 , a3 , a4 ) , true ;
case 6 : return listeners . fn . call ( listeners . context , a1 , a2 , a3 , a4 , a5 ) , true ;
}
for ( i = 1 , args = new Array ( len - 1 ) ; i < len ; i ++ ) {
args [ i - 1 ] = arguments [ i ] ;
}
listeners . fn . apply ( listeners . context , args ) ;
} else {
var length = listeners . length
, j ;
for ( i = 0 ; i < length ; i ++ ) {
if ( listeners [ i ] . once ) this . removeListener ( event , listeners [ i ] . fn , undefined , true ) ;
switch ( len ) {
case 1 : listeners [ i ] . fn . call ( listeners [ i ] . context ) ; break ;
case 2 : listeners [ i ] . fn . call ( listeners [ i ] . context , a1 ) ; break ;
case 3 : listeners [ i ] . fn . call ( listeners [ i ] . context , a1 , a2 ) ; break ;
case 4 : listeners [ i ] . fn . call ( listeners [ i ] . context , a1 , a2 , a3 ) ; break ;
default :
if ( ! args ) for ( j = 1 , args = new Array ( len - 1 ) ; j < len ; j ++ ) {
args [ j - 1 ] = arguments [ j ] ;
}
listeners [ i ] . fn . apply ( listeners [ i ] . context , args ) ;
}
}
}
return true ;
} ;
/ * *
* Add a listener for a given event .
*
* @ param { String | Symbol } event The event name .
* @ param { Function } fn The listener function .
* @ param { Mixed } [ context = this ] The context to invoke the listener with .
* @ returns { EventEmitter } ` this ` .
* @ api public
* /
EventEmitter . prototype . on = function on ( event , fn , context ) {
var listener = new EE ( fn , context || this )
, evt = prefix ? prefix + event : event ;
if ( ! this . _events [ evt ] ) this . _events [ evt ] = listener , this . _eventsCount ++ ;
else if ( ! this . _events [ evt ] . fn ) this . _events [ evt ] . push ( listener ) ;
else this . _events [ evt ] = [ this . _events [ evt ] , listener ] ;
return this ;
} ;
/ * *
* Add a one - time listener for a given event .
*
* @ param { String | Symbol } event The event name .
* @ param { Function } fn The listener function .
* @ param { Mixed } [ context = this ] The context to invoke the listener with .
* @ returns { EventEmitter } ` this ` .
* @ api public
* /
EventEmitter . prototype . once = function once ( event , fn , context ) {
var listener = new EE ( fn , context || this , true )
, evt = prefix ? prefix + event : event ;
if ( ! this . _events [ evt ] ) this . _events [ evt ] = listener , this . _eventsCount ++ ;
else if ( ! this . _events [ evt ] . fn ) this . _events [ evt ] . push ( listener ) ;
else this . _events [ evt ] = [ this . _events [ evt ] , listener ] ;
return this ;
} ;
/ * *
* Remove the listeners of a given event .
*
* @ param { String | Symbol } event The event name .
* @ param { Function } fn Only remove the listeners that match this function .
* @ param { Mixed } context Only remove the listeners that have this context .
* @ param { Boolean } once Only remove one - time listeners .
* @ returns { EventEmitter } ` this ` .
* @ api public
* /
EventEmitter . prototype . removeListener = function removeListener ( event , fn , context , once ) {
var evt = prefix ? prefix + event : event ;
if ( ! this . _events [ evt ] ) return this ;
if ( ! fn ) {
if ( -- this . _eventsCount === 0 ) this . _events = new Events ( ) ;
else delete this . _events [ evt ] ;
return this ;
}
var listeners = this . _events [ evt ] ;
if ( listeners . fn ) {
if (
listeners . fn === fn
&& ( ! once || listeners . once )
&& ( ! context || listeners . context === context )
) {
if ( -- this . _eventsCount === 0 ) this . _events = new Events ( ) ;
else delete this . _events [ evt ] ;
}
} else {
for ( var i = 0 , events = [ ] , length = listeners . length ; i < length ; i ++ ) {
if (
listeners [ i ] . fn !== fn
|| ( once && ! listeners [ i ] . once )
|| ( context && listeners [ i ] . context !== context )
) {
events . push ( listeners [ i ] ) ;
}
}
//
// Reset the array, or remove it completely if we have no more listeners.
//
if ( events . length ) this . _events [ evt ] = events . length === 1 ? events [ 0 ] : events ;
else if ( -- this . _eventsCount === 0 ) this . _events = new Events ( ) ;
else delete this . _events [ evt ] ;
}
return this ;
} ;
/ * *
* Remove all listeners , or those of the specified event .
*
* @ param { String | Symbol } [ event ] The event name .
* @ returns { EventEmitter } ` this ` .
* @ api public
* /
EventEmitter . prototype . removeAllListeners = function removeAllListeners ( event ) {
var evt ;
if ( event ) {
evt = prefix ? prefix + event : event ;
if ( this . _events [ evt ] ) {
if ( -- this . _eventsCount === 0 ) this . _events = new Events ( ) ;
else delete this . _events [ evt ] ;
}
} else {
this . _events = new Events ( ) ;
this . _eventsCount = 0 ;
}
return this ;
} ;
//
// Alias methods names because people roll like that.
//
EventEmitter . prototype . off = EventEmitter . prototype . removeListener ;
EventEmitter . prototype . addListener = EventEmitter . prototype . on ;
//
// This function doesn't apply anymore.
//
EventEmitter . prototype . setMaxListeners = function setMaxListeners ( ) {
return this ;
} ;
//
// Expose the prefix.
//
EventEmitter . prefixed = prefix ;
//
// Allow `EventEmitter` to be imported as module namespace.
//
EventEmitter . EventEmitter = EventEmitter ;
//
// Expose the module.
//
if ( 'undefined' !== typeof module ) {
module . exports = EventEmitter ;
}
/***/ } ) ,
/* 55 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . matchText = exports . matchSpacing = exports . matchNewline = exports . matchBlot = exports . matchAttributor = exports . default = undefined ;
var _typeof = typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ? function ( obj ) { return typeof obj ; } : function ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _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" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _extend2 = _ _webpack _require _ _ ( 3 ) ;
var _extend3 = _interopRequireDefault ( _extend2 ) ;
var _quillDelta = _ _webpack _require _ _ ( 2 ) ;
var _quillDelta2 = _interopRequireDefault ( _quillDelta ) ;
var _parchment = _ _webpack _require _ _ ( 0 ) ;
var _parchment2 = _interopRequireDefault ( _parchment ) ;
var _quill = _ _webpack _require _ _ ( 5 ) ;
var _quill2 = _interopRequireDefault ( _quill ) ;
var _logger = _ _webpack _require _ _ ( 10 ) ;
var _logger2 = _interopRequireDefault ( _logger ) ;
var _module = _ _webpack _require _ _ ( 9 ) ;
var _module2 = _interopRequireDefault ( _module ) ;
var _align = _ _webpack _require _ _ ( 36 ) ;
var _background = _ _webpack _require _ _ ( 37 ) ;
var _code = _ _webpack _require _ _ ( 13 ) ;
var _code2 = _interopRequireDefault ( _code ) ;
var _color = _ _webpack _require _ _ ( 26 ) ;
var _direction = _ _webpack _require _ _ ( 38 ) ;
var _font = _ _webpack _require _ _ ( 39 ) ;
var _size = _ _webpack _require _ _ ( 40 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _defineProperty ( obj , key , value ) { if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var debug = ( 0 , _logger2 . default ) ( 'quill:clipboard' ) ;
var DOM _KEY = '__ql-matcher' ;
var CLIPBOARD _CONFIG = [ [ Node . TEXT _NODE , matchText ] , [ Node . TEXT _NODE , matchNewline ] , [ 'br' , matchBreak ] , [ Node . ELEMENT _NODE , matchNewline ] , [ Node . ELEMENT _NODE , matchBlot ] , [ Node . ELEMENT _NODE , matchSpacing ] , [ Node . ELEMENT _NODE , matchAttributor ] , [ Node . ELEMENT _NODE , matchStyles ] , [ 'li' , matchIndent ] , [ 'b' , matchAlias . bind ( matchAlias , 'bold' ) ] , [ 'i' , matchAlias . bind ( matchAlias , 'italic' ) ] , [ 'style' , matchIgnore ] ] ;
var ATTRIBUTE _ATTRIBUTORS = [ _align . AlignAttribute , _direction . DirectionAttribute ] . reduce ( function ( memo , attr ) {
memo [ attr . keyName ] = attr ;
return memo ;
} , { } ) ;
var STYLE _ATTRIBUTORS = [ _align . AlignStyle , _background . BackgroundStyle , _color . ColorStyle , _direction . DirectionStyle , _font . FontStyle , _size . SizeStyle ] . reduce ( function ( memo , attr ) {
memo [ attr . keyName ] = attr ;
return memo ;
} , { } ) ;
var Clipboard = function ( _Module ) {
_inherits ( Clipboard , _Module ) ;
function Clipboard ( quill , options ) {
_classCallCheck ( this , Clipboard ) ;
var _this = _possibleConstructorReturn ( this , ( Clipboard . _ _proto _ _ || Object . getPrototypeOf ( Clipboard ) ) . call ( this , quill , options ) ) ;
_this . quill . root . addEventListener ( 'paste' , _this . onPaste . bind ( _this ) ) ;
_this . container = _this . quill . addContainer ( 'ql-clipboard' ) ;
_this . container . setAttribute ( 'contenteditable' , true ) ;
_this . container . setAttribute ( 'tabindex' , - 1 ) ;
_this . matchers = [ ] ;
CLIPBOARD _CONFIG . concat ( _this . options . matchers ) . forEach ( function ( _ref ) {
var _ref2 = _slicedToArray ( _ref , 2 ) ,
selector = _ref2 [ 0 ] ,
matcher = _ref2 [ 1 ] ;
if ( ! options . matchVisual && matcher === matchSpacing ) return ;
_this . addMatcher ( selector , matcher ) ;
} ) ;
return _this ;
}
_createClass ( Clipboard , [ {
key : 'addMatcher' ,
value : function addMatcher ( selector , matcher ) {
this . matchers . push ( [ selector , matcher ] ) ;
}
} , {
key : 'convert' ,
value : function convert ( html ) {
if ( typeof html === 'string' ) {
this . container . innerHTML = html . replace ( /\>\r?\n +\</g , '><' ) ; // Remove spaces between tags
return this . convert ( ) ;
}
var formats = this . quill . getFormat ( this . quill . selection . savedRange . index ) ;
if ( formats [ _code2 . default . blotName ] ) {
var text = this . container . innerText ;
this . container . innerHTML = '' ;
return new _quillDelta2 . default ( ) . insert ( text , _defineProperty ( { } , _code2 . default . blotName , formats [ _code2 . default . blotName ] ) ) ;
}
var _prepareMatching = this . prepareMatching ( ) ,
_prepareMatching2 = _slicedToArray ( _prepareMatching , 2 ) ,
elementMatchers = _prepareMatching2 [ 0 ] ,
textMatchers = _prepareMatching2 [ 1 ] ;
var delta = traverse ( this . container , elementMatchers , textMatchers ) ;
// Remove trailing newline
if ( deltaEndsWith ( delta , '\n' ) && delta . ops [ delta . ops . length - 1 ] . attributes == null ) {
delta = delta . compose ( new _quillDelta2 . default ( ) . retain ( delta . length ( ) - 1 ) . delete ( 1 ) ) ;
}
debug . log ( 'convert' , this . container . innerHTML , delta ) ;
this . container . innerHTML = '' ;
return delta ;
}
} , {
key : 'dangerouslyPasteHTML' ,
value : function dangerouslyPasteHTML ( index , html ) {
var source = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : _quill2 . default . sources . API ;
if ( typeof index === 'string' ) {
this . quill . setContents ( this . convert ( index ) , html ) ;
this . quill . setSelection ( 0 , _quill2 . default . sources . SILENT ) ;
} else {
var paste = this . convert ( html ) ;
this . quill . updateContents ( new _quillDelta2 . default ( ) . retain ( index ) . concat ( paste ) , source ) ;
this . quill . setSelection ( index + paste . length ( ) , _quill2 . default . sources . SILENT ) ;
}
}
} , {
key : 'onPaste' ,
value : function onPaste ( e ) {
var _this2 = this ;
if ( e . defaultPrevented || ! this . quill . isEnabled ( ) ) return ;
var range = this . quill . getSelection ( ) ;
var delta = new _quillDelta2 . default ( ) . retain ( range . index ) ;
var scrollTop = this . quill . scrollingContainer . scrollTop ;
this . container . focus ( ) ;
this . quill . selection . update ( _quill2 . default . sources . SILENT ) ;
setTimeout ( function ( ) {
delta = delta . concat ( _this2 . convert ( ) ) . delete ( range . length ) ;
_this2 . quill . updateContents ( delta , _quill2 . default . sources . USER ) ;
// range.length contributes to delta.length()
_this2 . quill . setSelection ( delta . length ( ) - range . length , _quill2 . default . sources . SILENT ) ;
_this2 . quill . scrollingContainer . scrollTop = scrollTop ;
_this2 . quill . focus ( ) ;
} , 1 ) ;
}
} , {
key : 'prepareMatching' ,
value : function prepareMatching ( ) {
var _this3 = this ;
var elementMatchers = [ ] ,
textMatchers = [ ] ;
this . matchers . forEach ( function ( pair ) {
var _pair = _slicedToArray ( pair , 2 ) ,
selector = _pair [ 0 ] ,
matcher = _pair [ 1 ] ;
switch ( selector ) {
case Node . TEXT _NODE :
textMatchers . push ( matcher ) ;
break ;
case Node . ELEMENT _NODE :
elementMatchers . push ( matcher ) ;
break ;
default :
[ ] . forEach . call ( _this3 . container . querySelectorAll ( selector ) , function ( node ) {
// TODO use weakmap
node [ DOM _KEY ] = node [ DOM _KEY ] || [ ] ;
node [ DOM _KEY ] . push ( matcher ) ;
} ) ;
break ;
}
} ) ;
return [ elementMatchers , textMatchers ] ;
}
} ] ) ;
return Clipboard ;
} ( _module2 . default ) ;
Clipboard . DEFAULTS = {
matchers : [ ] ,
matchVisual : true
} ;
function applyFormat ( delta , format , value ) {
if ( ( typeof format === 'undefined' ? 'undefined' : _typeof ( format ) ) === 'object' ) {
return Object . keys ( format ) . reduce ( function ( delta , key ) {
return applyFormat ( delta , key , format [ key ] ) ;
} , delta ) ;
} else {
return delta . reduce ( function ( delta , op ) {
if ( op . attributes && op . attributes [ format ] ) {
return delta . push ( op ) ;
} else {
return delta . insert ( op . insert , ( 0 , _extend3 . default ) ( { } , _defineProperty ( { } , format , value ) , op . attributes ) ) ;
}
} , new _quillDelta2 . default ( ) ) ;
}
}
function computeStyle ( node ) {
if ( node . nodeType !== Node . ELEMENT _NODE ) return { } ;
var DOM _KEY = '__ql-computed-style' ;
return node [ DOM _KEY ] || ( node [ DOM _KEY ] = window . getComputedStyle ( node ) ) ;
}
function deltaEndsWith ( delta , text ) {
var endText = "" ;
for ( var i = delta . ops . length - 1 ; i >= 0 && endText . length < text . length ; -- i ) {
var op = delta . ops [ i ] ;
if ( typeof op . insert !== 'string' ) break ;
endText = op . insert + endText ;
}
return endText . slice ( - 1 * text . length ) === text ;
}
function isLine ( node ) {
if ( node . childNodes . length === 0 ) return false ; // Exclude embed blocks
var style = computeStyle ( node ) ;
return [ 'block' , 'list-item' ] . indexOf ( style . display ) > - 1 ;
}
function traverse ( node , elementMatchers , textMatchers ) {
// Post-order
if ( node . nodeType === node . TEXT _NODE ) {
return textMatchers . reduce ( function ( delta , matcher ) {
return matcher ( node , delta ) ;
} , new _quillDelta2 . default ( ) ) ;
} else if ( node . nodeType === node . ELEMENT _NODE ) {
return [ ] . reduce . call ( node . childNodes || [ ] , function ( delta , childNode ) {
var childrenDelta = traverse ( childNode , elementMatchers , textMatchers ) ;
if ( childNode . nodeType === node . ELEMENT _NODE ) {
childrenDelta = elementMatchers . reduce ( function ( childrenDelta , matcher ) {
return matcher ( childNode , childrenDelta ) ;
} , childrenDelta ) ;
childrenDelta = ( childNode [ DOM _KEY ] || [ ] ) . reduce ( function ( childrenDelta , matcher ) {
return matcher ( childNode , childrenDelta ) ;
} , childrenDelta ) ;
}
return delta . concat ( childrenDelta ) ;
} , new _quillDelta2 . default ( ) ) ;
} else {
return new _quillDelta2 . default ( ) ;
}
}
function matchAlias ( format , node , delta ) {
return applyFormat ( delta , format , true ) ;
}
function matchAttributor ( node , delta ) {
var attributes = _parchment2 . default . Attributor . Attribute . keys ( node ) ;
var classes = _parchment2 . default . Attributor . Class . keys ( node ) ;
var styles = _parchment2 . default . Attributor . Style . keys ( node ) ;
var formats = { } ;
attributes . concat ( classes ) . concat ( styles ) . forEach ( function ( name ) {
var attr = _parchment2 . default . query ( name , _parchment2 . default . Scope . ATTRIBUTE ) ;
if ( attr != null ) {
formats [ attr . attrName ] = attr . value ( node ) ;
if ( formats [ attr . attrName ] ) return ;
}
attr = ATTRIBUTE _ATTRIBUTORS [ name ] ;
if ( attr != null && ( attr . attrName === name || attr . keyName === name ) ) {
formats [ attr . attrName ] = attr . value ( node ) || undefined ;
}
attr = STYLE _ATTRIBUTORS [ name ] ;
if ( attr != null && ( attr . attrName === name || attr . keyName === name ) ) {
attr = STYLE _ATTRIBUTORS [ name ] ;
formats [ attr . attrName ] = attr . value ( node ) || undefined ;
}
} ) ;
if ( Object . keys ( formats ) . length > 0 ) {
delta = applyFormat ( delta , formats ) ;
}
return delta ;
}
function matchBlot ( node , delta ) {
var match = _parchment2 . default . query ( node ) ;
if ( match == null ) return delta ;
if ( match . prototype instanceof _parchment2 . default . Embed ) {
var embed = { } ;
var value = match . value ( node ) ;
if ( value != null ) {
embed [ match . blotName ] = value ;
delta = new _quillDelta2 . default ( ) . insert ( embed , match . formats ( node ) ) ;
}
} else if ( typeof match . formats === 'function' ) {
delta = applyFormat ( delta , match . blotName , match . formats ( node ) ) ;
}
return delta ;
}
function matchBreak ( node , delta ) {
if ( ! deltaEndsWith ( delta , '\n' ) ) {
delta . insert ( '\n' ) ;
}
return delta ;
}
function matchIgnore ( ) {
return new _quillDelta2 . default ( ) ;
}
function matchIndent ( node , delta ) {
var match = _parchment2 . default . query ( node ) ;
if ( match == null || match . blotName !== 'list-item' || ! deltaEndsWith ( delta , '\n' ) ) {
return delta ;
}
var indent = - 1 ,
parent = node . parentNode ;
while ( ! parent . classList . contains ( 'ql-clipboard' ) ) {
if ( ( _parchment2 . default . query ( parent ) || { } ) . blotName === 'list' ) {
indent += 1 ;
}
parent = parent . parentNode ;
}
if ( indent <= 0 ) return delta ;
return delta . compose ( new _quillDelta2 . default ( ) . retain ( delta . length ( ) - 1 ) . retain ( 1 , { indent : indent } ) ) ;
}
function matchNewline ( node , delta ) {
if ( ! deltaEndsWith ( delta , '\n' ) ) {
if ( isLine ( node ) || delta . length ( ) > 0 && node . nextSibling && isLine ( node . nextSibling ) ) {
delta . insert ( '\n' ) ;
}
}
return delta ;
}
function matchSpacing ( node , delta ) {
if ( isLine ( node ) && node . nextElementSibling != null && ! deltaEndsWith ( delta , '\n\n' ) ) {
var nodeHeight = node . offsetHeight + parseFloat ( computeStyle ( node ) . marginTop ) + parseFloat ( computeStyle ( node ) . marginBottom ) ;
if ( node . nextElementSibling . offsetTop > node . offsetTop + nodeHeight * 1.5 ) {
delta . insert ( '\n' ) ;
}
}
return delta ;
}
function matchStyles ( node , delta ) {
var formats = { } ;
var style = node . style || { } ;
if ( style . fontStyle && computeStyle ( node ) . fontStyle === 'italic' ) {
formats . italic = true ;
}
if ( style . fontWeight && ( computeStyle ( node ) . fontWeight . startsWith ( 'bold' ) || parseInt ( computeStyle ( node ) . fontWeight ) >= 700 ) ) {
formats . bold = true ;
}
if ( Object . keys ( formats ) . length > 0 ) {
delta = applyFormat ( delta , formats ) ;
}
if ( parseFloat ( style . textIndent || 0 ) > 0 ) {
// Could be 0.5in
delta = new _quillDelta2 . default ( ) . insert ( '\t' ) . concat ( delta ) ;
}
return delta ;
}
function matchText ( node , delta ) {
var text = node . data ;
// Word represents empty line with <o:p> </o:p>
if ( node . parentNode . tagName === 'O:P' ) {
return delta . insert ( text . trim ( ) ) ;
}
if ( text . trim ( ) . length === 0 && node . parentNode . classList . contains ( 'ql-clipboard' ) ) {
return delta ;
}
if ( ! computeStyle ( node . parentNode ) . whiteSpace . startsWith ( 'pre' ) ) {
// eslint-disable-next-line func-style
var replacer = function replacer ( collapse , match ) {
match = match . replace ( /[^\u00a0]/g , '' ) ; // \u00a0 is nbsp;
return match . length < 1 && collapse ? ' ' : match ;
} ;
text = text . replace ( /\r\n/g , ' ' ) . replace ( /\n/g , ' ' ) ;
text = text . replace ( /\s\s+/g , replacer . bind ( replacer , true ) ) ; // collapse whitespace
if ( node . previousSibling == null && isLine ( node . parentNode ) || node . previousSibling != null && isLine ( node . previousSibling ) ) {
text = text . replace ( /^\s+/ , replacer . bind ( replacer , false ) ) ;
}
if ( node . nextSibling == null && isLine ( node . parentNode ) || node . nextSibling != null && isLine ( node . nextSibling ) ) {
text = text . replace ( /\s+$/ , replacer . bind ( replacer , false ) ) ;
}
}
return delta . insert ( text ) ;
}
exports . default = Clipboard ;
exports . matchAttributor = matchAttributor ;
exports . matchBlot = matchBlot ;
exports . matchNewline = matchNewline ;
exports . matchSpacing = matchSpacing ;
exports . matchText = matchText ;
/***/ } ) ,
/* 56 */ ,
/* 57 */ ,
/* 58 */ ,
/* 59 */ ,
/* 60 */ ,
/* 61 */ ,
/* 62 */ ,
/* 63 */ ,
/* 64 */ ,
/* 65 */ ,
/* 66 */ ,
/* 67 */ ,
/* 68 */ ,
/* 69 */ ,
/* 70 */ ,
/* 71 */ ,
/* 72 */ ,
/* 73 */ ,
/* 74 */ ,
/* 75 */ ,
/* 76 */ ,
/* 77 */ ,
/* 78 */ ,
/* 79 */ ,
/* 80 */ ,
/* 81 */ ,
/* 82 */ ,
/* 83 */ ,
/* 84 */ ,
/* 85 */ ,
/* 86 */ ,
/* 87 */ ,
/* 88 */ ,
/* 89 */ ,
/* 90 */ ,
/* 91 */ ,
/* 92 */ ,
/* 93 */ ,
/* 94 */ ,
/* 95 */ ,
/* 96 */ ,
/* 97 */ ,
/* 98 */ ,
/* 99 */ ,
/* 100 */ ,
/* 101 */ ,
/* 102 */ ,
/* 103 */ ,
/* 104 */ ,
/* 105 */ ,
/* 106 */ ,
/* 107 */ ,
/* 108 */ ,
/* 109 */ ,
/* 110 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
module . exports = _ _webpack _require _ _ ( 29 ) ;
/***/ } )
/******/ ] ) [ "default" ] ;
} ) ;