You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1 lines
44 KiB

{"version":3,"sources":["/source-files/jsondiffpatch/node_modules/fiberglass/node_modules/browserify/node_modules/browser-pack/_prelude.js","/source-files/jsondiffpatch/src/main-formatters.js","/source-files/jsondiffpatch/src/formatters/index.js","/source-files/jsondiffpatch/src/environment.js","/source-files/jsondiffpatch/src/formatters/base.js","/source-files/jsondiffpatch/src/formatters/annotated.js","/source-files/jsondiffpatch/src/formatters/jsonpatch.js","/source-files/jsondiffpatch/src/formatters/html.js"],"names":["module","exports","require","environment","base","html","annotated","jsonpatch","isBrowser","consoleModuleName","console","window","isArray","Array","a","getObjectKeys","Object","keys","obj","names","property","prototype","hasOwnProperty","call","push","trimUnderscore","str","substr","slice","arrayKeyToSortNumber","key","parseInt","arrayKeyComparer","key1","key2","BaseFormatter","format","delta","left","context","this","prepareContext","recurse","finalize","buffer","out","apply","arguments","typeFormattterNotFound","deltaType","Error","typeFormattterErrorFormatter","err","toString","join","leftKey","movedFrom","isLast","useMoveOriginHere","leftValue","value","type","getDeltaType","nodeType","_t","nodeBegin","rootBegin","typeFormattter","error","stack","nodeEnd","rootEnd","formatDeltaChildren","self","forEachDeltaKey","undefined","fn","name","arrayKeys","moveDestinations","includeMoveDestinations","sort","index","length","parseTextDiff","output","lines","split","i","l","line","lineOutput","pieces","location","exec","chr","pieceIndex","piecesLength","piece","pieceOutput","text","AnnotatedFormatter","indent","levels","indentLevel","indentPad","row","json","htmlNote","formatTextDiffString","format_unchanged","format_movedestination","format_node","wrapPropertyName","deltaAnnotations","added","formatLegend","modified","deleted","moved","textdiff","formatAnyChange","annotator","JSON","stringify","format_added","format_modified","format_deleted","format_moved","format_textdiff","defaultInstance","JSONFormatter","last","arr","sortBy","pred","opsByDescendingOrder","removeOps","b","splitA","path","splitB","compareByIndexDesc","partition","right","forEach","el","coll","reorderOps","jsonFormattedDiff","removeOpsOtherOps","operation","op","otherOps","removeOpsReverse","concat","named","movedestination","unchanged","textDiffLine","result","pushCurrentOp","val","currentPath","pop","indexA","indexB","lastA","lastB","isNaN","log","htmlEscape","replacements","replace","HtmlFormatter","formatValue","unescape","adjustArrows","node","document","getElementText","textContent","innerText","eachByQuery","query","elems","querySelectorAll","eachChildren","children","arrow","arrowParent","parentNode","svg","style","display","destinationElem","destination","querySelector","container","child","getAttribute","distance","offsetTop","setAttribute","Math","abs","top","curve","round","nodeClass","hasArrows","showUnchanged","show","delay","body","prefix","classes","showing","hiding","visible","hidden","list","classList","remove","add","setTimeout","intervalId","setInterval","clearInterval","hideUnchanged"],"mappings":"AAAA;ACCAA,OAAOC,QAAUC,QAAQ;;AEAzBD,QAAQO,UAA8B,mBAAXG;;AED3B,GAAIP,MAAOF,QAAQ,UACfiC,cAAgB/B,KAAK+B,cAErBkE,mBAAqB,WACvB7D,KAAKwC,yBAA0B,EAGjCqB,oBAAmBhF,UAAY,GAAIc,eAEnCkE,mBAAmBhF,UAAUoB,eAAiB,SAASF,GACrDJ,cAAcd,UAAUoB,eAAelB,KAAKiB,KAAMD,GAClDA,EAAQ+D,OAAS,SAASC,GACxB/D,KAAKgE,aAAehE,KAAKgE,aAAe,IACnB,mBAAXD,GAAyB,EAAIA,GACvC/D,KAAKiE,UAAY,GAAI5F,OAAM2B,KAAKgE,YAAc,GAAGlD,KAAK,iBAExDf,EAAQmE,IAAM,SAASC,EAAMC,GAC3BrE,EAAQM,IAAI,mHAEZN,EAAQM,IAAIN,EAAQkE,WACpBlE,EAAQM,IAAI,6CACZN,EAAQM,IAAI8D,GACZpE,EAAQM,IAAI,yDACZN,EAAQM,IAAI+D,GACZrE,EAAQM,IAAI,sBAIhBwD,mBAAmBhF,UAAU8B,6BAA+B,SAASZ,EAASa,GAC5Eb,EAAQmE,IAAI,GAAI,oCAAsCtD,EAAM,WAG9DiD,mBAAmBhF,UAAUwF,qBAAuB,SAAStE,EAASqB,GACpE,GAAI0B,GAAQ9C,KAAK4C,cAAcxB,EAC/BrB,GAAQM,IAAI,sCACZ,KAAK,GAAI2C,GAAI,EAAGC,EAAIH,EAAMH,OAAYM,EAAJD,EAAOA,IAAK,CAC5C,GAAIE,GAAOJ,EAAME,EACjBjD,GAAQM,IAAI,qGAGV6C,EAAKG,SAASH,KACd,oDAEAA,EAAKG,SAASE,IACd,yDAIF,KAAK,GADDH,GAASF,EAAKE,OACTI,EAAa,EAAGC,EAAeL,EAAOT,OAAqBc,EAAbD,EAA2BA,IAAc,CAC9F,GAAIE,GAAQN,EAAOI,EACnBzD,GAAQM,IAAI,uCAAyCqD,EAAMrC,KAAO,KAChEqC,EAAME,KAAO,WAEjB7D,EAAQM,IAAI,eAEdN,EAAQM,IAAI,UAGdwD,mBAAmBhF,UAAU6C,UAAY,SAAS3B,EAASsB,EAAME,GAC/DxB,EAAQM,IAAI,iDACC,SAATgB,IACFtB,EAAQmE,IAAI,KACZnE,EAAQ+D,UAEO,UAAbvC,GACFxB,EAAQmE,IAAI,aAAc,sDAI9BL,mBAAmBhF,UAAUkD,QAAU,SAAShC,EAASsB,GAC1C,SAATA,IACFtB,EAAQ+D,OAAO,IACf/D,EAAQmE,IAAI,MAEdnE,EAAQM,IAAI,aAGdwD,mBAAmBhF,UAAU4C,UAAY,SAAS1B,EAAST,EAAKyB,EAASM,EAAME,GAC7ExB,EAAQmE,IAAI,SAAW5E,EAAM,aAChB,SAAT+B,GACFtB,EAAQ+D,SAEO,UAAbvC,GACFxB,EAAQmE,IAAI,aAAc,sDAI9BL,mBAAmBhF,UAAUiD,QAAU,SAAS/B,EAAST,EAAKyB,EAASM,EAAME,EAAUN,GACxE,SAATI,GACFtB,EAAQ+D,OAAO,IAEjB/D,EAAQmE,IAAI,KAAOjD,EAAS,GAAK,OAKnC4C,mBAAmBhF,UAAUyF,iBAAmB,aAIhDT,mBAAmBhF,UAAU0F,uBAAyB,aAKtDV,mBAAmBhF,UAAU2F,YAAc,SAASzE,EAASF,EAAOC,GAElEE,KAAKgC,oBAAoBjC,EAASF,EAAOC,GAG3C,IAAI2E,kBAAmB,SAASpC,GAC9B,MAAO,2CAA6CA,EAAO,gBAGzDqC,kBACFC,MAAO,SAAS9E,EAAOC,EAAMR,EAAKyB,GAChC,GAAI6D,GAAe,0BACnB,OAAuB,mBAAZ7D,GACF,YAAc6D,EAEA,gBAAZ7D,GACF,mBAAqBA,EAAU6D,EAEjC,gBAAkBH,iBAAiB1D,GAAW6D,GAEvDC,SAAU,SAAShF,EAAOC,EAAMR,EAAKyB,GACnC,GAAI6D,GAAe,yCACnB,OAAuB,mBAAZ7D,GACF,eAAiB6D,EAEH,gBAAZ7D,GACF,mBAAqBA,EAAU6D,EAEjC,mBAAqBH,iBAAiB1D,GAAW6D,GAE1DE,QAAS,SAASjF,EAAOC,EAAMR,EAAKyB,GAClC,GAAI6D,GAAe,qCACnB,OAAuB,mBAAZ7D,GACF,eAAiB6D,EAEH,gBAAZ7D,GACF,gBAAkBA,EAAU6D,EAE9B,mBAAqBH,iBAAiB1D,GAAW6D,GAE1DG,MAAO,SAASlF,EAAOC,EAAMR,EAAKyB,GAChC,MAAO,wEACLA,EAAU,sEAEVlB,EAAM,GAAK,WAEfmF,SAAU,SAASnF,EAAOC,EAAMR,EAAKyB,GACnC,GAAIsC,GAA+B,mBAAZtC,GACrB,GACsB,gBAAZA,GACR,aAAeA,EACf,gBAAkB0D,iBAAiB1D,EAEvC,OAAO,YAAcsC,EAAW,oHAMhC4B,gBAAkB,SAASlF,EAASF,GACtC,GAAIY,GAAYT,KAAKsB,aAAazB,GAC9BqF,EAAYR,iBAAiBjE,GAC7B2D,EAAWc,GAAaA,EAAU5E,MAAM4E,EAC1C7G,MAAMQ,UAAUO,MAAML,KAAKwB,UAAW,IACpC4D,EAAOgB,KAAKC,UAAUvF,EAAO,KAAM,EACrB,cAAdY,IAEF0D,EAAOA,EAAKpB,MAAM,OAAOjC,KAAK,gBAEhCf,EAAQ+D,SACR/D,EAAQmE,IAAIC,EAAMC,GAClBrE,EAAQ+D,OAAO,IAGjBD,oBAAmBhF,UAAUwG,aAAeJ,gBAC5CpB,mBAAmBhF,UAAUyG,gBAAkBL,gBAC/CpB,mBAAmBhF,UAAU0G,eAAiBN,gBAC9CpB,mBAAmBhF,UAAU2G,aAAeP,gBAC5CpB,mBAAmBhF,UAAU4G,gBAAkBR,gBAI/CxH,QAAQoG,mBAAqBA,kBAE7B,IAAI6B,gBAEJjI,SAAQmC,OAAS,SAASC,EAAOC,GAI/B,MAHK4F,mBACHA,gBAAkB,GAAI7B,qBAEjB6B,gBAAgB9F,OAAOC,EAAOC;;ADnMvC,GAAI1B,SAAoC,kBAAlBC,OAAMD,QAE1BC,MAAMD,QAEN,SAASE,GACP,MAAOA,aAAaD,QAGpBE,cAAuC,kBAAhBC,QAAOC,KAChC,SAASC,GACP,MAAOF,QAAOC,KAAKC,IACjB,SAASA,GACX,GAAIC,KACJ,KAAK,GAAIC,KAAYF,GACfF,OAAOK,UAAUC,eAAeC,KAAKL,EAAKE,IAC5CD,EAAMK,KAAKJ,EAGf,OAAOD,IAGPM,eAAiB,SAASC,GAC5B,MAAyB,MAArBA,EAAIC,OAAO,EAAG,GACTD,EAAIE,MAAM,GAEZF,GAGLG,qBAAuB,SAASC,GAClC,MAAY,OAARA,EACK,GAEkB,MAArBA,EAAIH,OAAO,EAAG,GACTI,SAASD,EAAIF,MAAM,GAAI,IAEvBG,SAASD,EAAK,IAAM,IAK7BE,iBAAmB,SAASC,EAAMC,GACpC,MAAOL,sBAAqBI,GAAQJ,qBAAqBK,IAGvDC,cAAgB,YAEpBA,eAAcd,UAAUe,OAAS,SAASC,EAAOC,GAC/C,GAAIC,KAGJ,OAFAC,MAAKC,eAAeF,GACpBC,KAAKE,QAAQH,EAASF,EAAOC,GACtBE,KAAKG,SAASJ,IAGvBJ,cAAcd,UAAUoB,eAAiB,SAASF,GAChDA,EAAQK,UACRL,EAAQM,IAAM,WACZL,KAAKI,OAAOpB,KAAKsB,MAAMN,KAAKI,OAAQG,aAIxCZ,cAAcd,UAAU2B,uBAAyB,SAAST,EAASU,GACjE,KAAM,IAAIC,OAAM,6BAA+BD,IAGjDd,cAAcd,UAAU8B,6BAA+B,SAASZ,EAASa,GACvE,MAAOA,GAAIC,YAGblB,cAAcd,UAAUsB,SAAW,SAASJ,GAC1C,MAAI3B,SAAQ2B,EAAQK,QACXL,EAAQK,OAAOU,KAAK,IAD7B,QAKFnB,cAAcd,UAAUqB,QAAU,SAASH,EAASF,EAAOC,EAAMR,EAAKyB,EAASC,EAAWC,GAExF,GAAIC,GAAoBrB,GAASmB,EAC7BG,EAAYD,EAAoBF,EAAUI,MAAQtB,CAEtD,IAAqB,mBAAVD,IAAwC,mBAARP,GAA3C,CAIA,GAAI+B,GAAOrB,KAAKsB,aAAazB,EAAOmB,GAChCO,EAAoB,SAATF,EAAgC,MAAbxB,EAAM2B,GAAa,QAAU,SAAY,EAExD,oBAARlC,GACTU,KAAKyB,UAAU1B,EAAST,EAAKyB,EAASM,EAAME,EAAUN,GAEtDjB,KAAK0B,UAAU3B,EAASsB,EAAME,EAGhC,IAAII,EACJ,KACEA,EAAiB3B,KAAK,UAAYqB,IAASrB,KAAKQ,uBAAuBT,EAASsB,GAChFM,EAAe5C,KAAKiB,KAAMD,EAASF,EAAOsB,EAAW7B,EAAKyB,EAASC,GACnE,MAAOJ,GACPZ,KAAKW,6BAA6BZ,EAASa,EAAKf,EAAOsB,EAAW7B,EAAKyB,EAASC,GACzD,mBAAZ9C,UAA2BA,QAAQ0D,OAC5C1D,QAAQ0D,MAAMhB,EAAIiB,OAIH,mBAARvC,GACTU,KAAK8B,QAAQ/B,EAAST,EAAKyB,EAASM,EAAME,EAAUN,GAEpDjB,KAAK+B,QAAQhC,EAASsB,EAAME,KAIhC5B,cAAcd,UAAUmD,oBAAsB,SAASjC,EAASF,EAAOC,GACrE,GAAImC,GAAOjC,IACXA,MAAKkC,gBAAgBrC,EAAOC,EAAM,SAASR,EAAKyB,EAASC,EAAWC,GAClEgB,EAAK/B,QAAQH,EAASF,EAAMP,GAAMQ,EAAOA,EAAKiB,GAAWoB,OACvD7C,EAAKyB,EAASC,EAAWC,MAI/BtB,cAAcd,UAAUqD,gBAAkB,SAASrC,EAAOC,EAAMsC,GAC9D,GAGIC,GAHA5D,EAAOF,cAAcsB,GACrByC,EAAyB,MAAbzC,EAAM2B,GAClBe,IAEJ,IAAoB,mBAATzC,GACT,IAAKuC,IAAQvC,GACPtB,OAAOK,UAAUC,eAAeC,KAAKe,EAAMuC,KAClB,mBAAhBxC,GAAMwC,IACZC,GAA2C,mBAAtBzC,GAAM,IAAMwC,IACpC5D,EAAKO,KAAKqD,GAMlB,KAAKA,IAAQxC,GACX,GAAIrB,OAAOK,UAAUC,eAAeC,KAAKc,EAAOwC,GAAO,CACrD,GAAIjB,GAAQvB,EAAMwC,EACdjE,SAAQgD,IAAuB,IAAbA,EAAM,KAC1BmB,EAAiBnB,EAAM,GAAGP,aACxBvB,IAAK+C,EACLjB,MAAOtB,GAAQA,EAAKP,SAAS8C,EAAKlD,OAAO,MAEvCa,KAAKwC,2BAA4B,GACd,mBAAT1C,IACkB,mBAApBD,GAAMuB,EAAM,KACpB3C,EAAKO,KAAKoC,EAAM,GAAGP,aAMzByB,EACF7D,EAAKgE,KAAKjD,kBAEVf,EAAKgE,MAEP,KAAK,GAAIC,GAAQ,EAAGC,EAASlE,EAAKkE,OAAgBA,EAARD,EAAgBA,IAAS,CACjE,GAAIpD,GAAMb,EAAKiE,EACf,KAAIJ,GAAqB,OAARhD,EAAjB,CAGA,GAAIyB,GAAUuB,EACI,gBAARhD,GAAmBA,EAAMC,SAASN,eAAeK,GAAM,IAC/DA,EACE2B,EAAUyB,IAAUC,EAAS,CACjCP,GAAG9C,EAAKyB,EAASwB,EAAiBxB,GAAUE,MAIhDtB,cAAcd,UAAUyC,aAAe,SAASzB,EAAOmB,GACrD,GAAqB,mBAAVnB,GACT,MAAyB,mBAAdmB,GACF,kBAEF,WAET,IAAI5C,QAAQyB,GAAQ,CAClB,GAAqB,IAAjBA,EAAM8C,OACR,MAAO,OAET,IAAqB,IAAjB9C,EAAM8C,OACR,MAAO,UAET,IAAqB,IAAjB9C,EAAM8C,QAA6B,IAAb9C,EAAM,GAC9B,MAAO,SAET,IAAqB,IAAjBA,EAAM8C,QAA6B,IAAb9C,EAAM,GAC9B,MAAO,UAET,IAAqB,IAAjBA,EAAM8C,QAA6B,IAAb9C,EAAM,GAC9B,MAAO,YAEJ,IAAqB,gBAAVA,GAChB,MAAO,MAET,OAAO,WAGTF,cAAcd,UAAU+D,cAAgB,SAASxB,GAG/C,IAAK,GAFDyB,MACAC,EAAQ1B,EAAM2B,MAAM,SACfC,EAAI,EAAGC,EAAIH,EAAMH,OAAYM,EAAJD,EAAOA,IAAK,CAC5C,GAAIE,GAAOJ,EAAME,GACbG,GACFC,WAEEC,EAAW,4BAA4BC,KAAKJ,GAAM9D,MAAM,EAC5D+D,GAAWE,UACTH,KAAMG,EAAS,GACfE,IAAKF,EAAS,GAGhB,KAAK,GADDD,GAASF,EAAKH,MAAM,MAAM3D,MAAM,GAC3BoE,EAAa,EAAGC,EAAeL,EAAOT,OAAqBc,EAAbD,EAA2BA,IAAc,CAC9F,GAAIE,GAAQN,EAAOI,EACnB,IAAKE,EAAMf,OAAX,CAGA,GAAIgB,IACFtC,KAAM,UAEmB,OAAvBqC,EAAMvE,OAAO,EAAG,GAClBwE,EAAYtC,KAAO,QACa,MAAvBqC,EAAMvE,OAAO,EAAG,KACzBwE,EAAYtC,KAAO,WAErBsC,EAAYC,KAAOF,EAAMtE,MAAM,GAC/B+D,EAAWC,OAAOpE,KAAK2E,IAEzBd,EAAO7D,KAAKmE,GAEd,MAAON,IAGTpF,QAAQkC,cAAgBA;;AGlOxB,QAASwI,YAAWvE,GASlB,IAAK,GARD/F,GAAO+F,EACPwE,IACD,KAAM,UACN,KAAM,SACN,KAAM,SACN,KAAM,WACN,KAAM,WAEApF,EAAI,EAAGA,EAAIoF,EAAazF,OAAQK,IACvCnF,EAAOA,EAAKwK,QAAQD,EAAapF,GAAG,GAAIoF,EAAapF,GAAG,GAE1D,OAAOnF,GAnBT,GAAID,MAAOF,QAAQ,UACfiC,cAAgB/B,KAAK+B,cAErB2I,cAAgB,YAEpBA,eAAczJ,UAAY,GAAIc,eAiB9B2I,cAAczJ,UAAU8B,6BAA+B,SAASZ,EAASa,GACvEb,EAAQM,IAAI,oCAAsCO,EAAM,WAG1D0H,cAAczJ,UAAU0J,YAAc,SAASxI,EAASqB,GACtDrB,EAAQM,IAAI,QAAU8H,WAAWhD,KAAKC,UAAUhE,EAAO,KAAM,IAAM,WAGrEkH,cAAczJ,UAAUwF,qBAAuB,SAAStE,EAASqB,GAC/D,GAAI0B,GAAQ9C,KAAK4C,cAAcxB,EAC/BrB,GAAQM,IAAI,sCACZ,KAAK,GAAI2C,GAAI,EAAGC,EAAIH,EAAMH,OAAYM,EAAJD,EAAOA,IAAK,CAC5C,GAAIE,GAAOJ,EAAME,EACjBjD,GAAQM,IAAI,qGAGV6C,EAAKG,SAASH,KACd,oDAEAA,EAAKG,SAASE,IACd,yDAIF,KAAK,GADDH,GAASF,EAAKE,OACTI,EAAa,EAAGC,EAAeL,EAAOT,OAAqBc,EAAbD,EAA2BA,IAAc,CAE9F,GAAIE,GAAQN,EAAOI,EACnBzD,GAAQM,IAAI,uCAAyCqD,EAAMrC,KAAO,KAChE8G,WAAWK,SAAS9E,EAAME,OAAS,WAEvC7D,EAAQM,IAAI,eAEdN,EAAQM,IAAI,SAGd,IAAIoI,cAAe,SAAgDC,GACjEA,EAAOA,GAAQC,QACf,IAAIC,GAAiB,SAASlC,GAC5B,MAAOA,GAAGmC,aAAenC,EAAGoC,WAE1BC,EAAc,SAASrC,EAAIsC,EAAO5G,GAEpC,IAAK,GADD6G,GAAQvC,EAAGwC,iBAAiBF,GACvBhG,EAAI,EAAGC,EAAIgG,EAAMtG,OAAYM,EAAJD,EAAOA,IACvCZ,EAAG6G,EAAMjG,KAGTmG,EAAe,SAASzC,EAAItE,GAC9B,IAAK,GAAIY,GAAI,EAAGC,EAAIyD,EAAG0C,SAASzG,OAAYM,EAAJD,EAAOA,IAC7CZ,EAAGsE,EAAG0C,SAASpG,GAAIA,GAGvB+F,GAAYL,EAAM,uBAAwB,SAASW,GACjD,GAAIC,GAAcD,EAAME,WACpBC,EAAMH,EAAMD,SAAS,GACvBhD,EAAOoD,EAAIJ,SAAS,EACtBI,GAAIC,MAAMC,QAAU,MACpB,IAEIC,GAFAC,EAAchB,EAAeU,EAAYO,cAAc,qCACvDC,EAAYR,EAAYC,UAO5B,IALAJ,EAAaW,EAAW,SAASC,GAC3BA,EAAMC,aAAa,cAAgBJ,IACrCD,EAAkBI,KAGjBJ,EAGL,IACE,GAAIM,GAAWN,EAAgBO,UAAYZ,EAAYY,SACvDV,GAAIW,aAAa,SAAUC,KAAKC,IAAIJ,GAAY,GAChDZ,EAAMI,MAAMa,IAAO,IAAML,EAAW,EAAI,EAAIA,GAAa,IACzD,IAAIM,GAAQN,EAAW,EACrB,cAAgBG,KAAKI,MAAMP,EAAW,GAAK,QAAUA,EAAW,GAChE,QAAWA,EAAY,SAAWG,KAAKI,OAAOP,EAAW,GAAK,OAChE7D,GAAK+D,aAAa,IAAKI,GACvBf,EAAIC,MAAMC,QAAU,GACpB,MAAO9I,GACP,UAKN0H,eAAczJ,UAAU6C,UAAY,SAAS3B,EAASsB,EAAME,GAC1D,GAAIkJ,GAAY,iBAAmBpJ,GAChCE,EAAW,kCAAoCA,EAAW,GAC7DxB,GAAQM,IAAI,mCAAqCoK,EAAY,OAG/DnC,cAAczJ,UAAUkD,QAAU,SAAShC,GACzCA,EAAQM,IAAI,UAAYN,EAAQ2K,UAC7B,6CACCjC,aAAa5H,WACb,iBAAoB,MAG1ByH,cAAczJ,UAAU4C,UAAY,SAAS1B,EAAST,EAAKyB,EAASM,EAAME,GACxE,GAAIkJ,GAAY,iBAAmBpJ,GAChCE,EAAW,kCAAoCA,EAAW,GAC7DxB,GAAQM,IAAI,cAAgBoK,EAAY,eAAiB1J,EAAU,8CACnBA,EAAU,WAI5DuH,cAAczJ,UAAUiD,QAAU,SAAS/B,GACzCA,EAAQM,IAAI,UAKdiI,cAAczJ,UAAUyF,iBAAmB,SAASvE,EAASF,EAAOC,GAC9C,mBAATA,KAGXC,EAAQM,IAAI,qCACZL,KAAKuI,YAAYxI,EAASD,GAC1BC,EAAQM,IAAI,YAGdiI,cAAczJ,UAAU0F,uBAAyB,SAASxE,EAASF,EAAOC,GACpD,mBAATA,KAGXC,EAAQM,IAAI,qCACZL,KAAKuI,YAAYxI,EAASD,GAC1BC,EAAQM,IAAI,YAGdiI,cAAczJ,UAAU2F,YAAc,SAASzE,EAASF,EAAOC,GAE7D,GAAIyB,GAAyB,MAAb1B,EAAM2B,GAAc,QAAU,QAC9CzB,GAAQM,IAAI,yDAA2DkB,EAAW,MAClFvB,KAAKgC,oBAAoBjC,EAASF,EAAOC,GACzCC,EAAQM,IAAI,UAGdiI,cAAczJ,UAAUwG,aAAe,SAAStF,EAASF,GACvDE,EAAQM,IAAI,qCACZL,KAAKuI,YAAYxI,EAASF,EAAM,IAChCE,EAAQM,IAAI,WAGdiI,cAAczJ,UAAUyG,gBAAkB,SAASvF,EAASF,GAC1DE,EAAQM,IAAI,8DACZL,KAAKuI,YAAYxI,EAASF,EAAM,IAChCE,EAAQM,IAAI,qEAEZL,KAAKuI,YAAYxI,EAASF,EAAM,IAChCE,EAAQM,IAAI,WAGdiI,cAAczJ,UAAU0G,eAAiB,SAASxF,EAASF,GACzDE,EAAQM,IAAI,qCACZL,KAAKuI,YAAYxI,EAASF,EAAM,IAChCE,EAAQM,IAAI,WAGdiI,cAAczJ,UAAU2G,aAAe,SAASzF,EAASF,GACvDE,EAAQM,IAAI,qCACZL,KAAKuI,YAAYxI,EAASF,EAAM,IAChCE,EAAQM,IAAI,sDAAwDR,EAAM,GAAK,UAG/EE,EAAQM,IAEN,imBAYFN,EAAQ2K,WAAY,GAGtBpC,cAAczJ,UAAU4G,gBAAkB,SAAS1F,EAASF,GAC1DE,EAAQM,IAAI,qCACZL,KAAKqE,qBAAqBtE,EAASF,EAAM,IACzCE,EAAQM,IAAI,UAKd,IAAIsK,eAAgB,SAASC,EAAMlC,EAAMmC,GACvC,GAAInE,GAAKgC,GAAQC,SAASmC,KACtBC,EAAS,2BACTC,GACFC,QAASF,EAAS,UAClBG,OAAQH,EAAS,SACjBI,QAASJ,EAAS,UAClBK,OAAQL,EAAS,UAEfM,EAAO3E,EAAG4E,SACd,IAAKD,EAAL,CAGA,IAAKR,EAQH,MAPAQ,GAAKE,OAAOP,EAAQC,SACpBI,EAAKE,OAAOP,EAAQE,QACpBG,EAAKE,OAAOP,EAAQG,SACpBE,EAAKE,OAAOP,EAAQI,aAChBR,KAAS,GACXS,EAAKG,IAAIR,EAAQI,QAIjBR,MAAS,GACXS,EAAKE,OAAOP,EAAQC,SACpBI,EAAKG,IAAIR,EAAQG,SACjBM,WAAW,WACTJ,EAAKG,IAAIR,EAAQE,SAChB,MAEHG,EAAKE,OAAOP,EAAQE,QACpBG,EAAKG,IAAIR,EAAQC,SACjBI,EAAKE,OAAOP,EAAQI,QAEtB,IAAIM,GAAaC,YAAY,WAC3BlD,aAAa/B,IACZ,IACH+E,YAAW,WACTJ,EAAKE,OAAOP,EAAQC,SACpBI,EAAKE,OAAOP,EAAQE,QAChBN,KAAS,GACXS,EAAKG,IAAIR,EAAQI,QACjBC,EAAKE,OAAOP,EAAQG,WAEpBE,EAAKG,IAAIR,EAAQG,SACjBE,EAAKE,OAAOP,EAAQI,SAEtBK,WAAW,WACTJ,EAAKE,OAAOP,EAAQG,SACpBS,cAAcF,IACbb,EAAQ,MACVA,KAGDgB,cAAgB,SAASnD,EAAMmC,GACjC,MAAOF,gBAAc,EAAOjC,EAAMmC,GAGpCpN,SAAQ6K,cAAgBA,cAExB7K,QAAQkN,cAAgBA,cAExBlN,QAAQoO,cAAgBA,aAExB,IAAInG,gBAEJjI,SAAQmC,OAAS,SAASC,EAAOC,GAI/B,MAHK4F,mBACHA,gBAAkB,GAAI4C,gBAEjB5C,gBAAgB9F,OAAOC,EAAOC;;ALvRvC,GAAInC,aAAcD,QAAQ,iBAO1B,IALAD,QAAQG,KAAOF,QAAQ,UACvBD,QAAQI,KAAOH,QAAQ,UACvBD,QAAQK,UAAYJ,QAAQ,eAC5BD,QAAQM,UAAYL,QAAQ,gBAEvBC,YAAYK,UAAW,CAC1B,GAAIC,mBAAoB,WACxBR,SAAQS,QAAUR,QAAQO;;CIT5B,WAeE,QAAS0H,KACP3F,KAAKwC,yBAA0B,EA+FjC,QAASoD,GAAKC,GACZ,MAAOA,GAAIA,EAAIlD,OAAS,GAG1B,QAASmD,GAAOD,EAAKE,GAEnB,MADAF,GAAIpD,KAAKsD,GACFF,EAaT,QAASG,GAAqBC,GAC5B,MAAOH,GAAOG,EAAW,SAAU3H,EAAG4H,GACpC,GAAIC,GAAS7H,EAAE8H,KAAKrD,MAAM,KACtBsD,EAASH,EAAEE,KAAKrD,MAAM,IAC1B,OAAIoD,GAAOxD,SAAW0D,EAAO1D,OACpBwD,EAAOxD,OAAS0D,EAAO1D,OAEvB2D,EAAmBV,EAAKO,GAASP,EAAKS,MAKnD,QAASE,GAAUV,EAAKE,GACtB,GAAIjG,MACA0G,IAMJ,OAJAX,GAAIY,QAAQ,SAAUC,GACpB,GAAIC,GAAOZ,EAAKW,GAAM5G,EAAO0G,CAC7BG,GAAK3H,KAAK0H,MAEJ5G,EAAM0G,GAGhB,QAASI,GAAWC,GAClB,GAAIC,GAAoBP,EAAUM,EAAmB,SAAUE,GAC7D,MAAwB,WAAjBA,EAAUC,KAEff,EAAYa,EAAkB,GAC9BG,EAAWH,EAAkB,GAE7BI,EAAmBlB,EAAqBC,EAC5C,OAAOiB,GAAiBC,OAAOF,GAhKjC,GAAIrJ,GAAOF,QAAQ,UACfiC,EAAgB/B,EAAK+B,cAErByH,GACFzC,MAAO,MACPG,QAAS,SACTD,SAAU,UACVE,MAAO,QACPsC,gBAAiB,kBACjBC,UAAW,YACX1F,MAAO,QACP2F,aAAc,eAOhB5B,GAAc9G,UAAY,GAAIc,GAE9BgG,EAAc9G,UAAUoB,eAAiB,SAAUF,GACjDJ,EAAcd,UAAUoB,eAAelB,KAAKiB,KAAMD,GAClDA,EAAQyH,UACRzH,EAAQqG,QACRrG,EAAQ0H,cAAgB,SAAUT,EAAI5F,GACpC,GAAIsG,IACFV,GAAIA,EACJZ,KAAMpG,KAAK2H,cAEQ,oBAAVvG,KACTsG,EAAItG,MAAQA,GAEdpB,KAAKwH,OAAOxI,KAAK0I,IAGnB3H,EAAQ4H,YAAc,WACpB,MAAO,IAAM3H,KAAKoG,KAAKtF,KAAK,OAIhC6E,EAAc9G,UAAU8B,6BAA+B,SAAUZ,EAASa,GACxEb,EAAQM,IAAI,UAAYO,IAG1B+E,EAAc9G,UAAU6C,UAAY,aAGpCiE,EAAc9G,UAAUkD,QAAU,aAGlC4D,EAAc9G,UAAU4C,UAAY,SAAU1B,EAAST,EAAKyB,GAC1DhB,EAAQqG,KAAKpH,KAAK+B,IAGpB4E,EAAc9G,UAAUiD,QAAU,SAAU/B,GAC1CA,EAAQqG,KAAKwB,OAKfjC,EAAc9G,UAAUyF,iBAAmB,SAAUvE,EAASF,EAAOC,GAC/C,mBAATA,IAGXC,EAAQ0H,cAAcL,EAAME,UAAWxH,IAGzC6F,EAAc9G,UAAU0F,uBAAyB,SAAUxE,EAASF,EAAOC,GACrD,mBAATA,IAGXC,EAAQ0H,cAAcL,EAAMC,gBAAiBvH,IAG/C6F,EAAc9G,UAAU2F,YAAc,SAAUzE,EAASF,EAAOC,GAC9DE,KAAKgC,oBAAoBjC,EAASF,EAAOC,IAG3C6F,EAAc9G,UAAUwG,aAAe,SAAUtF,EAASF,GACxDE,EAAQ0H,cAAcL,EAAMzC,MAAO9E,EAAM,KAG3C8F,EAAc9G,UAAUyG,gBAAkB,SAAUvF,EAASF,GAC3DE,EAAQ0H,cAAcL,EAAMvC,SAAUhF,EAAM,KAG9C8F,EAAc9G,UAAU0G,eAAiB,SAAUxF,GACjDA,EAAQ0H,cAAcL,EAAMtC,UAG9Ba,EAAc9G,UAAU2G,aAAe,SAAUzF,EAASF,GACxDE,EAAQ0H,cAAcL,EAAMrC,MAAOlF,EAAM,KAG3C8F,EAAc9G,UAAU4G,gBAAkB,WACxC,KAAM,mBAGRE,EAAc9G,UAAUe,OAAS,SAAUC,EAAOC,GAChD,GAAIC,KAGJ,OAFAC,MAAKC,eAAeF,GACpBC,KAAKE,QAAQH,EAASF,EAAOC,GACtBC,EAAQyH,QAIjB/J,QAAQkI,cAAgBA,CAExB,IAAID,GAWAY,EAAqB,SAAUuB,EAAQC,GACzC,GAAIC,GAAQxI,SAASsI,EAAQ,IACzBG,EAAQzI,SAASuI,EAAQ,GAC7B,OAAMG,OAAMF,IAAUE,MAAMD,GAGnB,EAFAA,EAAQD,GAyCfnI,EAAS,SAAUC,EAAOC,GAI5B,MAHK4F,KACHA,EAAkB,GAAIC,IAEjBiB,EAAWlB,EAAgB9F,OAAOC,EAAOC,IAGlDrC,SAAQyK,IAAM,SAAUrI,EAAOC,GAC7B5B,QAAQgK,IAAItI,EAAOC,EAAOC,KAG5BrC,QAAQmC,OAASA","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","\nmodule.exports = require('./formatters');\n","var environment = require('../environment');\n\nexports.base = require('./base');\nexports.html = require('./html');\nexports.annotated = require('./annotated');\nexports.jsonpatch = require('./jsonpatch');\n\nif (!environment.isBrowser) {\n var consoleModuleName = './console';\n exports.console = require(consoleModuleName);\n}\n","\nexports.isBrowser = typeof window !== 'undefined';\n","var isArray = (typeof Array.isArray === 'function') ?\n // use native function\n Array.isArray :\n // use instanceof operator\n function(a) {\n return a instanceof Array;\n };\n\nvar getObjectKeys = typeof Object.keys === 'function' ?\n function(obj) {\n return Object.keys(obj);\n } : function(obj) {\n var names = [];\n for (var property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n names.push(property);\n }\n }\n return names;\n };\n\nvar trimUnderscore = function(str) {\n if (str.substr(0, 1) === '_') {\n return str.slice(1);\n }\n return str;\n};\n\nvar arrayKeyToSortNumber = function(key) {\n if (key === '_t') {\n return -1;\n } else {\n if (key.substr(0, 1) === '_') {\n return parseInt(key.slice(1), 10);\n } else {\n return parseInt(key, 10) + 0.1;\n }\n }\n};\n\nvar arrayKeyComparer = function(key1, key2) {\n return arrayKeyToSortNumber(key1) - arrayKeyToSortNumber(key2);\n};\n\nvar BaseFormatter = function BaseFormatter() {};\n\nBaseFormatter.prototype.format = function(delta, left) {\n var context = {};\n this.prepareContext(context);\n this.recurse(context, delta, left);\n return this.finalize(context);\n};\n\nBaseFormatter.prototype.prepareContext = function(context) {\n context.buffer = [];\n context.out = function() {\n this.buffer.push.apply(this.buffer, arguments);\n };\n};\n\nBaseFormatter.prototype.typeFormattterNotFound = function(context, deltaType) {\n throw new Error('cannot format delta type: ' + deltaType);\n};\n\nBaseFormatter.prototype.typeFormattterErrorFormatter = function(context, err) {\n return err.toString();\n};\n\nBaseFormatter.prototype.finalize = function(context) {\n if (isArray(context.buffer)) {\n return context.buffer.join('');\n }\n};\n\nBaseFormatter.prototype.recurse = function(context, delta, left, key, leftKey, movedFrom, isLast) {\n\n var useMoveOriginHere = delta && movedFrom;\n var leftValue = useMoveOriginHere ? movedFrom.value : left;\n\n if (typeof delta === 'undefined' && typeof key === 'undefined') {\n return undefined;\n }\n\n var type = this.getDeltaType(delta, movedFrom);\n var nodeType = type === 'node' ? (delta._t === 'a' ? 'array' : 'object') : '';\n\n if (typeof key !== 'undefined') {\n this.nodeBegin(context, key, leftKey, type, nodeType, isLast);\n } else {\n this.rootBegin(context, type, nodeType);\n }\n\n var typeFormattter;\n try {\n typeFormattter = this['format_' + type] || this.typeFormattterNotFound(context, type);\n typeFormattter.call(this, context, delta, leftValue, key, leftKey, movedFrom);\n } catch (err) {\n this.typeFormattterErrorFormatter(context, err, delta, leftValue, key, leftKey, movedFrom);\n if (typeof console !== 'undefined' && console.error) {\n console.error(err.stack);\n }\n }\n\n if (typeof key !== 'undefined') {\n this.nodeEnd(context, key, leftKey, type, nodeType, isLast);\n } else {\n this.rootEnd(context, type, nodeType);\n }\n};\n\nBaseFormatter.prototype.formatDeltaChildren = function(context, delta, left) {\n var self = this;\n this.forEachDeltaKey(delta, left, function(key, leftKey, movedFrom, isLast) {\n self.recurse(context, delta[key], left ? left[leftKey] : undefined,\n key, leftKey, movedFrom, isLast);\n });\n};\n\nBaseFormatter.prototype.forEachDeltaKey = function(delta, left, fn) {\n var keys = getObjectKeys(delta);\n var arrayKeys = delta._t === 'a';\n var moveDestinations = {};\n var name;\n if (typeof left !== 'undefined') {\n for (name in left) {\n if (Object.prototype.hasOwnProperty.call(left, name)) {\n if (typeof delta[name] === 'undefined' &&\n ((!arrayKeys) || typeof delta['_' + name] === 'undefined')) {\n keys.push(name);\n }\n }\n }\n }\n // look for move destinations\n for (name in delta) {\n if (Object.prototype.hasOwnProperty.call(delta, name)) {\n var value = delta[name];\n if (isArray(value) && value[2] === 3) {\n moveDestinations[value[1].toString()] = {\n key: name,\n value: left && left[parseInt(name.substr(1))]\n };\n if (this.includeMoveDestinations !== false) {\n if ((typeof left === 'undefined') &&\n (typeof delta[value[1]] === 'undefined')) {\n keys.push(value[1].toString());\n }\n }\n }\n }\n }\n if (arrayKeys) {\n keys.sort(arrayKeyComparer);\n } else {\n keys.sort();\n }\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n if (arrayKeys && key === '_t') {\n continue;\n }\n var leftKey = arrayKeys ?\n (typeof key === 'number' ? key : parseInt(trimUnderscore(key), 10)) :\n key;\n var isLast = (index === length - 1);\n fn(key, leftKey, moveDestinations[leftKey], isLast);\n }\n};\n\nBaseFormatter.prototype.getDeltaType = function(delta, movedFrom) {\n if (typeof delta === 'undefined') {\n if (typeof movedFrom !== 'undefined') {\n return 'movedestination';\n }\n return 'unchanged';\n }\n if (isArray(delta)) {\n if (delta.length === 1) {\n return 'added';\n }\n if (delta.length === 2) {\n return 'modified';\n }\n if (delta.length === 3 && delta[2] === 0) {\n return 'deleted';\n }\n if (delta.length === 3 && delta[2] === 2) {\n return 'textdiff';\n }\n if (delta.length === 3 && delta[2] === 3) {\n return 'moved';\n }\n } else if (typeof delta === 'object') {\n return 'node';\n }\n return 'unknown';\n};\n\nBaseFormatter.prototype.parseTextDiff = function(value) {\n var output = [];\n var lines = value.split('\\n@@ ');\n for (var i = 0, l = lines.length; i < l; i++) {\n var line = lines[i];\n var lineOutput = {\n pieces: []\n };\n var location = /^(?:@@ )?[-+]?(\\d+),(\\d+)/.exec(line).slice(1);\n lineOutput.location = {\n line: location[0],\n chr: location[1]\n };\n var pieces = line.split('\\n').slice(1);\n for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {\n var piece = pieces[pieceIndex];\n if (!piece.length) {\n continue;\n }\n var pieceOutput = {\n type: 'context'\n };\n if (piece.substr(0, 1) === '+') {\n pieceOutput.type = 'added';\n } else if (piece.substr(0, 1) === '-') {\n pieceOutput.type = 'deleted';\n }\n pieceOutput.text = piece.slice(1);\n lineOutput.pieces.push(pieceOutput);\n }\n output.push(lineOutput);\n }\n return output;\n};\n\nexports.BaseFormatter = BaseFormatter;\n","var base = require('./base');\nvar BaseFormatter = base.BaseFormatter;\n\nvar AnnotatedFormatter = function AnnotatedFormatter() {\n this.includeMoveDestinations = false;\n};\n\nAnnotatedFormatter.prototype = new BaseFormatter();\n\nAnnotatedFormatter.prototype.prepareContext = function(context) {\n BaseFormatter.prototype.prepareContext.call(this, context);\n context.indent = function(levels) {\n this.indentLevel = (this.indentLevel || 0) +\n (typeof levels === 'undefined' ? 1 : levels);\n this.indentPad = new Array(this.indentLevel + 1).join('&nbsp;&nbsp;');\n };\n context.row = function(json, htmlNote) {\n context.out('<tr><td style=\"white-space: nowrap;\">' +\n '<pre class=\"jsondiffpatch-annotated-indent\" style=\"display: inline-block\">');\n context.out(context.indentPad);\n context.out('</pre><pre style=\"display: inline-block\">');\n context.out(json);\n context.out('</pre></td><td class=\"jsondiffpatch-delta-note\"><div>');\n context.out(htmlNote);\n context.out('</div></td></tr>');\n };\n};\n\nAnnotatedFormatter.prototype.typeFormattterErrorFormatter = function(context, err) {\n context.row('', '<pre class=\"jsondiffpatch-error\">' + err + '</pre>');\n};\n\nAnnotatedFormatter.prototype.formatTextDiffString = function(context, value) {\n var lines = this.parseTextDiff(value);\n context.out('<ul class=\"jsondiffpatch-textdiff\">');\n for (var i = 0, l = lines.length; i < l; i++) {\n var line = lines[i];\n context.out('<li>' +\n '<div class=\"jsondiffpatch-textdiff-location\">' +\n '<span class=\"jsondiffpatch-textdiff-line-number\">' +\n line.location.line +\n '</span>' +\n '<span class=\"jsondiffpatch-textdiff-char\">' +\n line.location.chr +\n '</span>' +\n '</div>' +\n '<div class=\"jsondiffpatch-textdiff-line\">');\n var pieces = line.pieces;\n for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {\n var piece = pieces[pieceIndex];\n context.out('<span class=\"jsondiffpatch-textdiff-' + piece.type + '\">' +\n piece.text + '</span>');\n }\n context.out('</div></li>');\n }\n context.out('</ul>');\n};\n\nAnnotatedFormatter.prototype.rootBegin = function(context, type, nodeType) {\n context.out('<table class=\"jsondiffpatch-annotated-delta\">');\n if (type === 'node') {\n context.row('{');\n context.indent();\n }\n if (nodeType === 'array') {\n context.row('\"_t\": \"a\",', 'Array delta (member names indicate array indices)');\n }\n};\n\nAnnotatedFormatter.prototype.rootEnd = function(context, type) {\n if (type === 'node') {\n context.indent(-1);\n context.row('}');\n }\n context.out('</table>');\n};\n\nAnnotatedFormatter.prototype.nodeBegin = function(context, key, leftKey, type, nodeType) {\n context.row('&quot;' + key + '&quot;: {');\n if (type === 'node') {\n context.indent();\n }\n if (nodeType === 'array') {\n context.row('\"_t\": \"a\",', 'Array delta (member names indicate array indices)');\n }\n};\n\nAnnotatedFormatter.prototype.nodeEnd = function(context, key, leftKey, type, nodeType, isLast) {\n if (type === 'node') {\n context.indent(-1);\n }\n context.row('}' + (isLast ? '' : ','));\n};\n\n/* jshint camelcase: false */\n\nAnnotatedFormatter.prototype.format_unchanged = function() {\n return;\n};\n\nAnnotatedFormatter.prototype.format_movedestination = function() {\n return;\n};\n\n\nAnnotatedFormatter.prototype.format_node = function(context, delta, left) {\n // recurse\n this.formatDeltaChildren(context, delta, left);\n};\n\nvar wrapPropertyName = function(name) {\n return '<pre style=\"display:inline-block\">&quot;' + name + '&quot;</pre>';\n};\n\nvar deltaAnnotations = {\n added: function(delta, left, key, leftKey) {\n var formatLegend = ' <pre>([newValue])</pre>';\n if (typeof leftKey === 'undefined') {\n return 'new value' + formatLegend;\n }\n if (typeof leftKey === 'number') {\n return 'insert at index ' + leftKey + formatLegend;\n }\n return 'add property ' + wrapPropertyName(leftKey) + formatLegend;\n },\n modified: function(delta, left, key, leftKey) {\n var formatLegend = ' <pre>([previousValue, newValue])</pre>';\n if (typeof leftKey === 'undefined') {\n return 'modify value' + formatLegend;\n }\n if (typeof leftKey === 'number') {\n return 'modify at index ' + leftKey + formatLegend;\n }\n return 'modify property ' + wrapPropertyName(leftKey) + formatLegend;\n },\n deleted: function(delta, left, key, leftKey) {\n var formatLegend = ' <pre>([previousValue, 0, 0])</pre>';\n if (typeof leftKey === 'undefined') {\n return 'delete value' + formatLegend;\n }\n if (typeof leftKey === 'number') {\n return 'remove index ' + leftKey + formatLegend;\n }\n return 'delete property ' + wrapPropertyName(leftKey) + formatLegend;\n },\n moved: function(delta, left, key, leftKey) {\n return 'move from <span title=\"(position to remove at original state)\">index ' +\n leftKey + '</span> to ' +\n '<span title=\"(position to insert at final state)\">index ' +\n delta[1] + '</span>';\n },\n textdiff: function(delta, left, key, leftKey) {\n var location = (typeof leftKey === 'undefined') ?\n '' : (\n (typeof leftKey === 'number') ?\n ' at index ' + leftKey :\n ' at property ' + wrapPropertyName(leftKey)\n );\n return 'text diff' + location + ', format is ' +\n '<a href=\"https://code.google.com/p/google-diff-match-patch/wiki/Unidiff\">' +\n 'a variation of Unidiff</a>';\n }\n};\n\nvar formatAnyChange = function(context, delta) {\n var deltaType = this.getDeltaType(delta);\n var annotator = deltaAnnotations[deltaType];\n var htmlNote = annotator && annotator.apply(annotator,\n Array.prototype.slice.call(arguments, 1));\n var json = JSON.stringify(delta, null, 2);\n if (deltaType === 'textdiff') {\n // split text diffs lines\n json = json.split('\\\\n').join('\\\\n\"+\\n \"');\n }\n context.indent();\n context.row(json, htmlNote);\n context.indent(-1);\n};\n\nAnnotatedFormatter.prototype.format_added = formatAnyChange;\nAnnotatedFormatter.prototype.format_modified = formatAnyChange;\nAnnotatedFormatter.prototype.format_deleted = formatAnyChange;\nAnnotatedFormatter.prototype.format_moved = formatAnyChange;\nAnnotatedFormatter.prototype.format_textdiff = formatAnyChange;\n\n/* jshint camelcase: true */\n\nexports.AnnotatedFormatter = AnnotatedFormatter;\n\nvar defaultInstance;\n\nexports.format = function(delta, left) {\n if (!defaultInstance) {\n defaultInstance = new AnnotatedFormatter();\n }\n return defaultInstance.format(delta, left);\n};\n","(function () {\n var base = require('./base');\n var BaseFormatter = base.BaseFormatter;\n\n var named = {\n added: 'add',\n deleted: 'remove',\n modified: 'replace',\n moved: 'moved',\n movedestination: 'movedestination',\n unchanged: 'unchanged',\n error: 'error',\n textDiffLine: 'textDiffLine'\n };\n\n function JSONFormatter() {\n this.includeMoveDestinations = false;\n }\n\n JSONFormatter.prototype = new BaseFormatter();\n\n JSONFormatter.prototype.prepareContext = function (context) {\n BaseFormatter.prototype.prepareContext.call(this, context);\n context.result = [];\n context.path = [];\n context.pushCurrentOp = function (op, value) {\n var val = {\n op: op,\n path: this.currentPath()\n };\n if (typeof value !== 'undefined') {\n val.value = value;\n }\n this.result.push(val);\n };\n\n context.currentPath = function () {\n return '/' + this.path.join('/');\n };\n };\n\n JSONFormatter.prototype.typeFormattterErrorFormatter = function (context, err) {\n context.out('[ERROR]' + err);\n };\n\n JSONFormatter.prototype.rootBegin = function () {\n };\n\n JSONFormatter.prototype.rootEnd = function () {\n };\n\n JSONFormatter.prototype.nodeBegin = function (context, key, leftKey) {\n context.path.push(leftKey);\n };\n\n JSONFormatter.prototype.nodeEnd = function (context) {\n context.path.pop();\n };\n\n /* jshint camelcase: false */\n\n JSONFormatter.prototype.format_unchanged = function (context, delta, left) {\n if (typeof left === 'undefined') {\n return;\n }\n context.pushCurrentOp(named.unchanged, left);\n };\n\n JSONFormatter.prototype.format_movedestination = function (context, delta, left) {\n if (typeof left === 'undefined') {\n return;\n }\n context.pushCurrentOp(named.movedestination, left);\n };\n\n JSONFormatter.prototype.format_node = function (context, delta, left) {\n this.formatDeltaChildren(context, delta, left);\n };\n\n JSONFormatter.prototype.format_added = function (context, delta) {\n context.pushCurrentOp(named.added, delta[0]);\n };\n\n JSONFormatter.prototype.format_modified = function (context, delta) {\n context.pushCurrentOp(named.modified, delta[1]);\n };\n\n JSONFormatter.prototype.format_deleted = function (context) {\n context.pushCurrentOp(named.deleted);\n };\n\n JSONFormatter.prototype.format_moved = function (context, delta) {\n context.pushCurrentOp(named.moved, delta[1]);\n };\n\n JSONFormatter.prototype.format_textdiff = function () {\n throw 'not implimented';\n };\n\n JSONFormatter.prototype.format = function (delta, left) {\n var context = {};\n this.prepareContext(context);\n this.recurse(context, delta, left);\n return context.result;\n };\n /* jshint camelcase: true */\n\n exports.JSONFormatter = JSONFormatter;\n\n var defaultInstance;\n\n function last(arr) {\n return arr[arr.length - 1];\n }\n\n function sortBy(arr, pred) {\n arr.sort(pred);\n return arr;\n }\n\n var compareByIndexDesc = function (indexA, indexB) {\n var lastA = parseInt(indexA, 10);\n var lastB = parseInt(indexB, 10);\n if (!(isNaN(lastA) || isNaN(lastB))) {\n return lastB - lastA;\n } else {\n return 0;\n }\n };\n\n function opsByDescendingOrder(removeOps) {\n return sortBy(removeOps, function (a, b) {\n var splitA = a.path.split('/');\n var splitB = b.path.split('/');\n if (splitA.length !== splitB.length) {\n return splitA.length - splitB.length;\n } else {\n return compareByIndexDesc(last(splitA), last(splitB));\n }\n });\n }\n\n function partition(arr, pred) {\n var left = [];\n var right = [];\n\n arr.forEach(function (el) {\n var coll = pred(el) ? left : right;\n coll.push(el);\n });\n return [left, right];\n }\n\n function reorderOps(jsonFormattedDiff) {\n var removeOpsOtherOps = partition(jsonFormattedDiff, function (operation) {\n return operation.op === 'remove';\n });\n var removeOps = removeOpsOtherOps[0];\n var otherOps = removeOpsOtherOps[1];\n\n var removeOpsReverse = opsByDescendingOrder(removeOps);\n return removeOpsReverse.concat(otherOps);\n }\n\n\n var format = function (delta, left) {\n if (!defaultInstance) {\n defaultInstance = new JSONFormatter();\n }\n return reorderOps(defaultInstance.format(delta, left));\n };\n\n exports.log = function (delta, left) {\n console.log(format(delta, left));\n };\n\n exports.format = format;\n})();\n","var base = require('./base');\nvar BaseFormatter = base.BaseFormatter;\n\nvar HtmlFormatter = function HtmlFormatter() {};\n\nHtmlFormatter.prototype = new BaseFormatter();\n\nfunction htmlEscape(text) {\n var html = text;\n var replacements = [\n [/&/g, '&amp;'],\n [/</g, '&lt;'],\n [/>/g, '&gt;'],\n [/'/g, '&apos;'],\n [/\"/g, '&quot;']\n ];\n for (var i = 0; i < replacements.length; i++) {\n html = html.replace(replacements[i][0], replacements[i][1]);\n }\n return html;\n}\n\nHtmlFormatter.prototype.typeFormattterErrorFormatter = function(context, err) {\n context.out('<pre class=\"jsondiffpatch-error\">' + err + '</pre>');\n};\n\nHtmlFormatter.prototype.formatValue = function(context, value) {\n context.out('<pre>' + htmlEscape(JSON.stringify(value, null, 2)) + '</pre>');\n};\n\nHtmlFormatter.prototype.formatTextDiffString = function(context, value) {\n var lines = this.parseTextDiff(value);\n context.out('<ul class=\"jsondiffpatch-textdiff\">');\n for (var i = 0, l = lines.length; i < l; i++) {\n var line = lines[i];\n context.out('<li>' +\n '<div class=\"jsondiffpatch-textdiff-location\">' +\n '<span class=\"jsondiffpatch-textdiff-line-number\">' +\n line.location.line +\n '</span>' +\n '<span class=\"jsondiffpatch-textdiff-char\">' +\n line.location.chr +\n '</span>' +\n '</div>' +\n '<div class=\"jsondiffpatch-textdiff-line\">');\n var pieces = line.pieces;\n for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {\n /* global unescape */\n var piece = pieces[pieceIndex];\n context.out('<span class=\"jsondiffpatch-textdiff-' + piece.type + '\">' +\n htmlEscape(unescape(piece.text)) + '</span>');\n }\n context.out('</div></li>');\n }\n context.out('</ul>');\n};\n\nvar adjustArrows = function jsondiffpatchHtmlFormatterAdjustArrows(node) {\n node = node || document;\n var getElementText = function(el) {\n return el.textContent || el.innerText;\n };\n var eachByQuery = function(el, query, fn) {\n var elems = el.querySelectorAll(query);\n for (var i = 0, l = elems.length; i < l; i++) {\n fn(elems[i]);\n }\n };\n var eachChildren = function(el, fn) {\n for (var i = 0, l = el.children.length; i < l; i++) {\n fn(el.children[i], i);\n }\n };\n eachByQuery(node, '.jsondiffpatch-arrow', function(arrow) {\n var arrowParent = arrow.parentNode;\n var svg = arrow.children[0],\n path = svg.children[1];\n svg.style.display = 'none';\n var destination = getElementText(arrowParent.querySelector('.jsondiffpatch-moved-destination'));\n var container = arrowParent.parentNode;\n var destinationElem;\n eachChildren(container, function(child) {\n if (child.getAttribute('data-key') === destination) {\n destinationElem = child;\n }\n });\n if (!destinationElem) {\n return;\n }\n try {\n var distance = destinationElem.offsetTop - arrowParent.offsetTop;\n svg.setAttribute('height', Math.abs(distance) + 6);\n arrow.style.top = (-8 + (distance > 0 ? 0 : distance)) + 'px';\n var curve = distance > 0 ?\n 'M30,0 Q-10,' + Math.round(distance / 2) + ' 26,' + (distance - 4) :\n 'M30,' + (-distance) + ' Q-10,' + Math.round(-distance / 2) + ' 26,4';\n path.setAttribute('d', curve);\n svg.style.display = '';\n } catch (err) {\n return;\n }\n });\n};\n\nHtmlFormatter.prototype.rootBegin = function(context, type, nodeType) {\n var nodeClass = 'jsondiffpatch-' + type +\n (nodeType ? ' jsondiffpatch-child-node-type-' + nodeType : '');\n context.out('<div class=\"jsondiffpatch-delta ' + nodeClass + '\">');\n};\n\nHtmlFormatter.prototype.rootEnd = function(context) {\n context.out('</div>' + (context.hasArrows ?\n ('<script type=\"text/javascript\">setTimeout(' +\n adjustArrows.toString() +\n ',10);</script>') : ''));\n};\n\nHtmlFormatter.prototype.nodeBegin = function(context, key, leftKey, type, nodeType) {\n var nodeClass = 'jsondiffpatch-' + type +\n (nodeType ? ' jsondiffpatch-child-node-type-' + nodeType : '');\n context.out('<li class=\"' + nodeClass + '\" data-key=\"' + leftKey + '\">' +\n '<div class=\"jsondiffpatch-property-name\">' + leftKey + '</div>');\n};\n\n\nHtmlFormatter.prototype.nodeEnd = function(context) {\n context.out('</li>');\n};\n\n/* jshint camelcase: false */\n\nHtmlFormatter.prototype.format_unchanged = function(context, delta, left) {\n if (typeof left === 'undefined') {\n return;\n }\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, left);\n context.out('</div>');\n};\n\nHtmlFormatter.prototype.format_movedestination = function(context, delta, left) {\n if (typeof left === 'undefined') {\n return;\n }\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, left);\n context.out('</div>');\n};\n\nHtmlFormatter.prototype.format_node = function(context, delta, left) {\n // recurse\n var nodeType = (delta._t === 'a') ? 'array' : 'object';\n context.out('<ul class=\"jsondiffpatch-node jsondiffpatch-node-type-' + nodeType + '\">');\n this.formatDeltaChildren(context, delta, left);\n context.out('</ul>');\n};\n\nHtmlFormatter.prototype.format_added = function(context, delta) {\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, delta[0]);\n context.out('</div>');\n};\n\nHtmlFormatter.prototype.format_modified = function(context, delta) {\n context.out('<div class=\"jsondiffpatch-value jsondiffpatch-left-value\">');\n this.formatValue(context, delta[0]);\n context.out('</div>' +\n '<div class=\"jsondiffpatch-value jsondiffpatch-right-value\">');\n this.formatValue(context, delta[1]);\n context.out('</div>');\n};\n\nHtmlFormatter.prototype.format_deleted = function(context, delta) {\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, delta[0]);\n context.out('</div>');\n};\n\nHtmlFormatter.prototype.format_moved = function(context, delta) {\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, delta[0]);\n context.out('</div><div class=\"jsondiffpatch-moved-destination\">' + delta[1] + '</div>');\n\n // draw an SVG arrow from here to move destination\n context.out(\n /*jshint multistr: true */\n '<div class=\"jsondiffpatch-arrow\" style=\"position: relative; left: -34px;\">\\\n <svg width=\"30\" height=\"60\" style=\"position: absolute; display: none;\">\\\n <defs>\\\n <marker id=\"markerArrow\" markerWidth=\"8\" markerHeight=\"8\" refx=\"2\" refy=\"4\"\\\n orient=\"auto\" markerUnits=\"userSpaceOnUse\">\\\n <path d=\"M1,1 L1,7 L7,4 L1,1\" style=\"fill: #339;\" />\\\n </marker>\\\n </defs>\\\n <path d=\"M30,0 Q-10,25 26,50\" style=\"stroke: #88f; stroke-width: 2px; fill: none;\\\n stroke-opacity: 0.5; marker-end: url(#markerArrow);\"></path>\\\n </svg>\\\n </div>');\n context.hasArrows = true;\n};\n\nHtmlFormatter.prototype.format_textdiff = function(context, delta) {\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatTextDiffString(context, delta[0]);\n context.out('</div>');\n};\n\n/* jshint camelcase: true */\n\nvar showUnchanged = function(show, node, delay) {\n var el = node || document.body;\n var prefix = 'jsondiffpatch-unchanged-';\n var classes = {\n showing: prefix + 'showing',\n hiding: prefix + 'hiding',\n visible: prefix + 'visible',\n hidden: prefix + 'hidden',\n };\n var list = el.classList;\n if (!list) {\n return;\n }\n if (!delay) {\n list.remove(classes.showing);\n list.remove(classes.hiding);\n list.remove(classes.visible);\n list.remove(classes.hidden);\n if (show === false) {\n list.add(classes.hidden);\n }\n return;\n }\n if (show === false) {\n list.remove(classes.showing);\n list.add(classes.visible);\n setTimeout(function() {\n list.add(classes.hiding);\n }, 10);\n } else {\n list.remove(classes.hiding);\n list.add(classes.showing);\n list.remove(classes.hidden);\n }\n var intervalId = setInterval(function() {\n adjustArrows(el);\n }, 100);\n setTimeout(function() {\n list.remove(classes.showing);\n list.remove(classes.hiding);\n if (show === false) {\n list.add(classes.hidden);\n list.remove(classes.visible);\n } else {\n list.add(classes.visible);\n list.remove(classes.hidden);\n }\n setTimeout(function() {\n list.remove(classes.visible);\n clearInterval(intervalId);\n }, delay + 400);\n }, delay);\n};\n\nvar hideUnchanged = function(node, delay) {\n return showUnchanged(false, node, delay);\n};\n\nexports.HtmlFormatter = HtmlFormatter;\n\nexports.showUnchanged = showUnchanged;\n\nexports.hideUnchanged = hideUnchanged;\n\nvar defaultInstance;\n\nexports.format = function(delta, left) {\n if (!defaultInstance) {\n defaultInstance = new HtmlFormatter();\n }\n return defaultInstance.format(delta, left);\n};\n"]}